如何使用Webpack注入全局variables?

我需要一个在编译时生成的Map的特定实例,以便将其与webpack捆绑在一起的代码提供给我。 我的用例,如果是一个Map的实例,但这个问题真的适用于任何variables。

  • 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值抓取文件系统,并构build正则expression式和处理程序的映射。 这应该发生在编译时,并且是一个常量映射,所以我想在我的代码被捆绑作为一个常量使用它。

我试图在entry.js里面构buildMap ,但是得到了各种奇怪的“无法find模块”的错误,我认为主要是因为我用来构buildMap的函数首先严重地滥用dynamic需求在目录树之外webpack的权限。

将不胜感激任何见解。