防止browserify包含模块的依赖项

Pab*_*blo 4 javascript node.js browserify gulp

我想在浏览器中使用我的NodeJS模块 - 所以我用browserify它来处理它.

现在,我如何停止browserify在bundle文件中包含模块的依赖项?在这种情况下依赖是lodash,我将在其中单独加载它index.html.

这是我到目前为止所得到的:

的index.html

<script src="lodash.js"></script>
<script src="my-module.js"></script>
Run Code Online (Sandbox Code Playgroud)

index.js

var _ = require('lodash');

_.each([0, 1, 2], function(item) {
    console.log(item);
});
Run Code Online (Sandbox Code Playgroud)

gulp.js

var browserify = require('browserify'),
  source = require('vinyl-source-stream');

gulp.task('browserify', function() {
  return browserify()
    .require('./index.js', {
      expose: 'my-module'
    })
    .bundle()
    .pipe(source('my-module.js'))
    .pipe(gulp.dest('./'));
});
Run Code Online (Sandbox Code Playgroud)

Pab*_*blo 6

browserify-shim 提供设置全局变量的选项.

以下是我对代码所做的更改.

的package.json

{
  "browserify-shim": {
    "lodash": "global:_"
  },
  "browserify": {
    "transform": ["browserify-shim"]
  }
}
Run Code Online (Sandbox Code Playgroud)

gulp.js

gulp.task('browserify', function() {
  return browserify('./index.js')
    .require('./index.js', {
      expose: 'my-module'
    })
    .transform('browserify-shim', {
      global: true
    })
    .bundle()
    .pipe(source('bundle.js'))
    .pipe(gulp.dest('./'));
});
Run Code Online (Sandbox Code Playgroud)