1

我正在尝试使用 webpack 来压缩我的代码(删除新行和空格),仅此而已。我不想要任何 webpack__require__,不要修改,不要丑化,只需删除空格和新行。

我必须在 terser/webpack 中提供哪些选项才能实现这一目标?

let bundle = {
    mode: 'production',
    target: 'web',
    entry: path.resolve(__dirname, './res/') + '/bundle.js',
    output: {
        path: path.resolve(__dirname, './res/'),
        filename: 'minified.js',
    },
    optimization: {
        minimizer: [
            new TerserPlugin({
                terserOptions: {
                    ecma: undefined,
                    warnings: false,
                    parse: {},
                    compress: {},
                    mangle: false,
                    module: false,
                    toplevel: false,
                    keep_classnames: true,
                    keep_fnames: true,
                }
            })
        ]
    }
};

似乎不这样做。先感谢您。

4

3 回答 3

2

只是为了建立 felismosh 对 CLI 的回答,如果您只想删除空格和换行符, 您将希望包含--mangleor命令。--compress

所以它会更像: terser original-file.js -o minified-file.js.

除非在 CLI 命令中明确打开,否则会禁用 Mangle 和 compress。

于 2020-02-06T16:27:35.603 回答
1

这将禁用压缩并使用输出选项删除评论。该extractComments属性可防止插件将注释提取到文本文件中。

module.exports = {
    /* ... */
    optimization: {
        minimizer: [
            new TerserPlugin({
                terserOptions: {
                    compress: false,
                    output: {
                        comments: false,
                    },
                },
                extractComments: false,
            }),
        ],
    },
};
于 2020-07-18T20:17:07.663 回答
0

无需 webpack 直接使用 terser 即可。运行npm i terser安装它,然后你将有2个选择:

  1. 使用它的 cli terser --compress --mangle -- input.js,.

  2. 从节点使用它的api,

const Terser = require('terser');

const code = {
  'file1.js': 'function add(first, second) { return first + second; }',
  'file2.js': 'console.log(add(1 + 2, 3 + 4));',
};
const options = {
  ecma: undefined,
  warnings: false,
  parse: {},
  compress: {},
  mangle: false,
  module: false,
  toplevel: false,
  keep_classnames: true,
  keep_fnames: true,
};
const result = Terser.minify(code, options);
console.log(result.code);

于 2019-06-19T16:58:40.813 回答