根据构建解决对两个不同模块的导入
Resolving an import to two different modules depending on build
我有两个模块:mymodule-real
和 mymodule-dummy
。
我希望 webpack 像这样解析这些模块,具体取决于 Webpack 环境变量:
mymodule -> mymodule-real
or
mymodule -> mymodule-dummy
所以,我想要两个有两个不同的 'development' 构建:一个带有真实模块,另一个带有模拟其行为的虚拟模块。
我目前的成绩:
我能做到:
plugins: [
new webpack.NormalModuleReplacementPlugin(/mymodule/, function(resource) {
resource.request = 'mymodule-' + (USE_DUMMY ? 'dummy' : 'real');
})
]
但我有一个问题:我正在编写一个 Electron 应用程序,我希望它们是外部的,已从 /node_modules/
解决。如果我在 externals
配置部分列出这些模块,则此插件不起作用。
我可以使用 Webpack 重定向 外部 模块的导入吗?
我在 Github 有一个 answer from @sokra:
Yes it's the NormalModuleReplacementPlugin not the
ExternalModuleReplacementPlugin.
You may want to do this:
externals: (context, request, callback) => {
if(/mymodule/.test(request) {
return callback(null, USE_DUMMY ? 'mymodule-dummy' : 'mymodule-real'
}
callback();
}
or this if you don't really need a regexp:
externals: {
mymodule: USE_DUMMY ? 'mymodule-dummy' : 'mymodule-real'
}
我有两个模块:mymodule-real
和 mymodule-dummy
。
我希望 webpack 像这样解析这些模块,具体取决于 Webpack 环境变量:
mymodule -> mymodule-real
or
mymodule -> mymodule-dummy
所以,我想要两个有两个不同的 'development' 构建:一个带有真实模块,另一个带有模拟其行为的虚拟模块。
我目前的成绩:
我能做到:
plugins: [
new webpack.NormalModuleReplacementPlugin(/mymodule/, function(resource) {
resource.request = 'mymodule-' + (USE_DUMMY ? 'dummy' : 'real');
})
]
但我有一个问题:我正在编写一个 Electron 应用程序,我希望它们是外部的,已从 /node_modules/
解决。如果我在 externals
配置部分列出这些模块,则此插件不起作用。
我可以使用 Webpack 重定向 外部 模块的导入吗?
我在 Github 有一个 answer from @sokra:
Yes it's the NormalModuleReplacementPlugin not the ExternalModuleReplacementPlugin.
You may want to do this:
externals: (context, request, callback) => { if(/mymodule/.test(request) { return callback(null, USE_DUMMY ? 'mymodule-dummy' : 'mymodule-real' } callback(); }
or this if you don't really need a regexp:
externals: { mymodule: USE_DUMMY ? 'mymodule-dummy' : 'mymodule-real' }