关于 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
全局中。
最佳答案
使用 browserify 版本 5.11.1 和 grunt-browserify 版本 3.0.1,我已经成功地获得了类似的设置:
options:{
preBundleCB: function (b) {
b.require("./dev/js/foomod.js",{expose: 'foomod'});
}
}
关于javascript - Browserify 外部需要 Grunt-Browserify,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25585903/