Browserify外部需要Grunt Browserify

Browserify External Requires with Grunt-Browserify

本文关键字:Browserify Grunt 外部      更新时间:2023-09-26

关于外部需求的Browserify docs部分展示了如何使捆绑包中的模块可用于全局环境:

browserify -r through -r duplexer -r ./my-file.js:my-module > bundle.js

但我在配置GruntBrowserify时遇到了问题。

-r标志似乎对应于Grunt Browserify中的require选项,但该选项的文档描述没有提及外部需求或导出require()函数。

在我的Gruntfile中,我尝试将require选项设置为我需要公开的模块(顺便说一句,它已经在捆绑包中了):

options: {
  require: ['./dev/js/foomod.js'],
}

然后在我的页面脚本中,我尝试require()文档中显示的模块:

<script>
  var Foomod = require('./foomod.js');
  Foomod.init({foo: 'bar'});
</script>

但这会记录错误require is not defined

我的目标是调用模块的init()方法,如图所示,这样我就可以在不将其放入window全局的情况下传入运行时数据。

使用browserfy版本5.11.1和grunt browserify版本3.0.1,我成功地获得了类似的设置:

options:{
  preBundleCB: function (b) {
    b.require("./dev/js/foomod.js",{expose: 'foomod'});
  }
}