我有两个模块:mymodule-real
和mymodule-dummy
。
我希望webpack根据Webpack环境变量来解析这些模块:
mymodule -> mymodule-real
or
mymodule -> mymodule-dummy
因此,我希望有两个不同的“开发”版本:一个带有真实模块,另一个带有模拟其行为的虚拟模块。
到目前为止我的成功:
我能够做到这一点:
plugins: [
new webpack.NormalModuleReplacementPlugin(/mymodule/, function(resource) {
resource.request = 'mymodule-' + (USE_DUMMY ? 'dummy' : 'real');
})
]
但是我有一个问题:我正在编写一个Electron应用程序,我希望它们是外部的,可以通过/node_modules/
进行解析。如果我在externals
config部分中列出了这些模块,则此插件不起作用。
我可以使用Webpack重定向外部模块的导入吗?
答案 0 :(得分:0)
我在Github上有一个answer from @sokra:
是的,它是NormalModuleReplacementPlugin而不是 外部模块替换插件。
您可能想这样做:
externals: (context, request, callback) => { if(/mymodule/.test(request) { return callback(null, USE_DUMMY ? 'mymodule-dummy' : 'mymodule-real' } callback(); }
或如果您真的不需要正则表达式,则此:
externals: { mymodule: USE_DUMMY ? 'mymodule-dummy' : 'mymodule-real' }