Browserify插入全局变量
尽管存在很多相关问题,但他们不回答如何解决以下问题。
我有一个nodejs文件index.js。
var browserify = require('browserify');
var data = getSomeData();
browserify('entry.js').bundle();
我希望可以在entry.js
访问data
。 我发现insertGlobalVars
选项insertGlobalVars
但我找不到任何适当的文档或示例。 我试过{insertGlobalVars: {myVar: someData}}
但它不起作用。
我无法调用require('someData')
因为我的数据仅在执行index.js
时生成。
更新 :数据是一个数组; 键是文件名,值 - 文件内容(大小约为500b)。
insertGlobalVars
选项包含一个包含函数的对象(使用file
和basedir
参数调用)。 所以你必须像这样指定你的insertGlobalVars
选项:
var browserify = require('browserify');
var someData = getSomeData();
browserify('entry.js', {
insertGlobalVars: {
someData: function () { return JSON.stringify(someData); }
}
})
.bundle()
.pipe(process.stdout);
请注意,如果在代码中实际使用someData
全局,则数据将仅包含在捆绑中。 并且每个使用全局的模块都会收到自己的副本。
将一个额外的模块注入到bundle中是可能的,这样数据就可以被需要(并且bundle只包含一个数据副本),但是由于module-deps
和文件系统。 欲了解更多信息,你可以看看这个答案。