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选项包含一个包含函数的对象(使用filebasedir参数调用)。 所以你必须像这样指定你的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和文件系统。 欲了解更多信息,你可以看看这个答案。

链接地址: http://www.djcxy.com/p/5627.html

上一篇: Browserify insert global variable

下一篇: Deadlock occurring during query with UPDLOCK hint