Browserify插入全局变量

时间:2016-10-21 10:01:28

标签: browserify

尽管有很多相关问题,但他们没有回答如何解决以下问题。

我有一个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)。

1 个答案:

答案 0 :(得分:7)

insertGlobalVars选项需要object that contains functions(使用filebasedir参数调用)。因此,您必须指定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

相关问题