使用TerserWebpackPlugin将sourceMap bundle.js.map文件存储在特定位置



我想要什么?

使用TerserPlugin将sourceMapsomething.js.map文件存储到特定位置。我找到了一些关于如何自定义缩小的基本说明-https://github.com/webpack-contrib/terser-webpack-plugin#custom-minimy功能,但我无法使用它。

这是我在webpack.config.ts:中的优化对象

optimization: {
splitChunks: ifProduction({
chunks: 'all',
automaticNameDelimiter: '.'
}, false),
runtimeChunk: ifProduction(true, false),
minimize: true,
minimizer: [
ifProduction(new TerserPlugin({
parallel: true,
sourceMap: true,
minify: 'see value below -->>',
terserOptions: {
output: {
ascii_only: true,
beautify: false
},
compress: {
pure_getters: true,
join_vars: false
}
}
}))
]
}

这是我的minimy函数,但我根本找不到"导出".js.map的方法,或者不知道它是如何工作的。

minify: (file, sourceMap) => {
// https://github.com/mishoo/UglifyJS2#minify-options
const uglifyJsOptions: any = {
/* your `uglify-js` package options */
};
if (sourceMap) {
uglifyJsOptions.sourceMap = {
content: sourceMap,
root: "http://localhost:7000",
url: "out.js.map"
};
}
return require('uglify-js').minify(file, uglifyJsOptions);
}

devtool: ifNotTest(ifDevelopment('eval', 'source-map'))

我花了两天时间试图弄清楚minimy函数是如何工作的,并质疑自己为什么它们仍然引用uglify-js。我认为terser可以有一些自定义sourceMap的选项,但webpack的文档在这种情况下用处不大:https://webpack.js.org/plugins/terser-webpack-plugin/#minify

您可以使用webpack输出设置"sourceMapFilename"指定源映射文件名和位置。

https://webpack.js.org/configuration/output/#outputsourcemapfilename

示例:

output: {
filename: 'assets/js/[name].[chunkhash].js',
chunkFilename: 'assets/js/[name].[chunkhash].js',
path: path.resolve(__dirname, 'dist'),
sourceMapFilename: 'assets/js/maps/[name].[chunkhash].js.map'
}

最新更新