尽管有很多相关问题,但他们没有回答如何解决以下问题。
我有一个nodejs文件index.js。
var browserify = require('browserify');
var data = getSomeData();
browserify('entry.js').bundle();
我希望data
可以访问entry.js
。我找到了browserify选项insertGlobalVars
,但我找不到任何适当的文档或示例。我试过{insertGlobalVars: {myVar: someData}}
,但它不起作用。
我无法调用require('someData')
,因为我的数据仅在执行index.js
时生成。
更新: 数据是一个数组; key是文件名,值 - 文件内容(大小约为500b)。
答案 0 :(得分:7)
insertGlobalVars
选项需要object that contains functions(使用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
全局,则数据将仅包含在捆绑中。使用全局的每个模块都将收到自己的副本。
可以在捆绑中注入一个额外的模块,以便可能需要数据(并且捆绑包只包含数据的单个副本),但由于{之间的交互,这将更加复杂{1}}和文件系统。有关详细信息,您可以查看此answer。