如何使用Webpack注入全局变量?

时间:2017-03-23 19:10:23

标签: node.js webpack webpack-2

我需要在编译时生成的Map的特定实例,以便我可以使用与webpack捆绑的代码。我的用例如果是Map的实例,但问题确实存在于任何变量中。

  • webpack.DefinePlugin因为Map的实例在字符串化中无法生存而无法工作。我可以反序列化/序列化,但这似乎效率低下。
  • options.externals无法工作,因为我没有require外部模块被捆绑商忽略。

我已经通过在global上设置值来实现此功能,但我不确定这是解决此问题的最佳方法。

这是一个可怜的人为例子:

webpack.config.js

const myVar = new Map([
  ['a test value', () => {}]
]);

// is there a better way?
global.myVar = myVar;

module.exports = {
  entry: './entry.js',
  output: {
    filename: './output.js'
  },
  target: 'node',
}

entry.js

console.log(global.myVar) //=> Map { { "a test value", [Function] } }

在我的真实应用中,我的Map值会抓取文件系统并构建正则表达式和处理程序的映射。这应该在编译时发生,并且是一个常量映射,所以我想在我的代码中将它作为常量使用。

我尝试在Map内构建entry.js,但是有各种奇怪的问题"找不到模块"错误,我认为主要是因为我首先用于构建Map的功能严重滥用了webpack的权限范围之外的目录树中的动态需求。

非常感谢任何见解。

0 个答案:

没有答案