Webpack 4,从 minification/compression 中排除第 3 方库
Webpack 4, exclude 3rd party lib from minification/compression
我的配置中有以下内容:
const viewerConfigProdWeb = merge(common.commonWebConfig, {
output: {
path: outputPath,
filename: common.bundleNameWeb
},
devtool: 'source-map',
mode: 'production',
optimization: {
minimizer: [
new UglifyJsPlugin({
cache: true,
parallel: true,
sourceMap: true,
uglifyOptions: {
compress: false, //<--- if enabled, causes errors
ecma: 6,
mangle: true,
exclude: path.resolve(__dirname, '../js/vendor/tomtom.min.js'), // <--- it is already minified, want to exclude it somehow. But this approach doesn't work =(
}
})
]
}
});
当我在 uglifyOptions 中将 'compress' 更改为 true 时出现运行时错误。当 webpack 尝试优化已经压缩和缩小的第三方库时,会出现这些错误。如何将其排除在优化之外?
更新:根据 Sin 的回答和 readme,将配置中的优化部分更改为以下内容:
optimization: {
minimizer: [
new UglifyJsPlugin({
cache: true,
parallel: true,
sourceMap: true,
exclude: /\.min\.js$/, //<---- moved up and used regex
uglifyOptions: {
compress: true, //<---- still causes errors when enabled
ecma: 6,
mangle: true
}
})
]
}
这也不行 =( 还有其他想法吗?
经过一段时间的努力,终于发现exclude
选项只检查输出文件名而不是源文件名。有一个 github issue 解决这个问题。
您可以尝试@hulkish 提供的解决方案。
原始答案(无效):
尝试将 exclude
添加到 UglifyJsPlugin 选项的顶层。并使用 RegExp
或 RegExp
数组而不是完整路径。参见 uglifyjs-webpack-plugin README
我的配置中有以下内容:
const viewerConfigProdWeb = merge(common.commonWebConfig, {
output: {
path: outputPath,
filename: common.bundleNameWeb
},
devtool: 'source-map',
mode: 'production',
optimization: {
minimizer: [
new UglifyJsPlugin({
cache: true,
parallel: true,
sourceMap: true,
uglifyOptions: {
compress: false, //<--- if enabled, causes errors
ecma: 6,
mangle: true,
exclude: path.resolve(__dirname, '../js/vendor/tomtom.min.js'), // <--- it is already minified, want to exclude it somehow. But this approach doesn't work =(
}
})
]
}
});
当我在 uglifyOptions 中将 'compress' 更改为 true 时出现运行时错误。当 webpack 尝试优化已经压缩和缩小的第三方库时,会出现这些错误。如何将其排除在优化之外?
更新:根据 Sin 的回答和 readme,将配置中的优化部分更改为以下内容:
optimization: {
minimizer: [
new UglifyJsPlugin({
cache: true,
parallel: true,
sourceMap: true,
exclude: /\.min\.js$/, //<---- moved up and used regex
uglifyOptions: {
compress: true, //<---- still causes errors when enabled
ecma: 6,
mangle: true
}
})
]
}
这也不行 =( 还有其他想法吗?
经过一段时间的努力,终于发现exclude
选项只检查输出文件名而不是源文件名。有一个 github issue 解决这个问题。
您可以尝试@hulkish 提供的解决方案。
原始答案(无效):
尝试将 exclude
添加到 UglifyJsPlugin 选项的顶层。并使用 RegExp
或 RegExp
数组而不是完整路径。参见 uglifyjs-webpack-plugin README