Browserify 插入全局变量
Browserify insert global variable
尽管有很多相关问题,但他们没有回答如何解决以下问题。
我有一个 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为文件名,value为文件内容(大小约为500b)。
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
全局时,数据才会包含在包中。每个使用全局的模块都会收到自己的副本。
可以在包中注入一个额外的模块,这样就可以需要数据(并且包将只包含一个数据副本),但由于交互,这会更复杂在 module-deps
和文件系统之间。有关更多信息,您可以查看此 answer.
尽管有很多相关问题,但他们没有回答如何解决以下问题。
我有一个 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为文件名,value为文件内容(大小约为500b)。
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
全局时,数据才会包含在包中。每个使用全局的模块都会收到自己的副本。
可以在包中注入一个额外的模块,这样就可以需要数据(并且包将只包含一个数据副本),但由于交互,这会更复杂在 module-deps
和文件系统之间。有关更多信息,您可以查看此 answer.