external requires上的Browserify文档部分介绍了如何使捆绑模块可用于全局环境:
browserify -r through -r duplexer -r ./my-file.js:my-module > bundle.js
但是我无法配置它以使用Grunt-Browserify。
-r
标记似乎与Grunt-Browserify中的require
选项相对应,但docs description for this option未提及外部要求或导出require()
功能
在我的Gruntfile中,我尝试将require
选项设置为我需要公开的模块(顺便说一下,它已经在bundle中):
options: {
require: ['./dev/js/foomod.js'],
}
然后在我的页面脚本中,我尝试require()
模块中显示的模块:
<script>
var Foomod = require('./foomod.js');
Foomod.init({foo: 'bar'});
</script>
但是记录错误require is not defined
。
我的目标是调用模块的init()
方法,以便我可以传入运行时数据而不将其放在window
全局中。
答案 0 :(得分:0)
使用browserify版本5.11.1和grunt-browserify版本3.0.1,我设法让类似的设置工作:
options:{
preBundleCB: function (b) {
b.require("./dev/js/foomod.js",{expose: 'foomod'});
}
}