Javascript 使用TerserWebPackagePlugin将SourceMapBundle.js.map文件存储在特定位置

Javascript 使用TerserWebPackagePlugin将SourceMapBundle.js.map文件存储在特定位置,javascript,webpack,source-maps,terser,Javascript,Webpack,Source Maps,Terser,我想要什么 使用TerserPlugin将sourceMapsomething.js.map文件存储到特定位置。 我已经找到了一些关于如何自定义缩小的基本说明,但我无法使用它 这是我在webpack.config.ts中的优化对象: optimization: { splitChunks: ifProduction({ chunks: 'all', automaticNameDelimiter: '.' }, false), runtimeChunk: ifProdu

我想要什么

使用TerserPlugin将sourceMap
something.js.map
文件存储到特定位置。 我已经找到了一些关于如何自定义缩小的基本说明,但我无法使用它

这是我在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
        }
      }
    }))
  ]
}

这是我的minify函数,但我就是找不到一种方法来“导出”这个.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','sourcemap'))

我花了两天时间试图弄清楚minify函数是如何工作的,并问自己为什么它们仍然引用
uglify js
。我认为terser可以有一些选项来定制sourceMap,但webpack的文档在这种情况下没有多大用处:

您可以使用网页包输出设置“sourceMapFilename”来指定sourcemap文件名和位置

例如:

        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'
        }