Vue CLI 3 使用 Terser 删除 console.log 和代码注释

Posted

技术标签:

【中文标题】Vue CLI 3 使用 Terser 删除 console.log 和代码注释【英文标题】:Vue CLI 3 remove console.log and code comments with Terser 【发布时间】:2020-02-07 00:17:32 【问题描述】:

我正在使用 VUE CLI 3,我需要从构建的产品中删除 console.logcode cmets。这是我的Terser 设置:

webpack.config.jssrc 文件夹中

    module.exports = 
mode: 'production',
  optimization: 
    minimize: true,
    minimizer: [
      new TerserPlugin(
        terserOptions: 
          ecma: undefined,
          warnings: false,
          parse: ,
          compress: drop_debugger,
          mangle: true, // Note `mangle.properties` is `false` by default.
          module: false,
          output: null,
          toplevel: false,
          nameCache: null,
          ie8: false,
          keep_classnames: undefined,
          keep_fnames: false,
          safari10: false,
        ,
      ),
    ],
  ,
;

我的生产工作流程:运行npm run build -> cd dist -> npm run serve

生产版本仍会输出所有 console.log 语句并显示代码 cmets (<!-- -->)。 我需要更改哪些内容才能删除它们?

【问题讨论】:

尝试:terserOptions: ecma: 6, compress: drop_console: true , 输出: cmets: false, beautify: false @JeffProd 刚刚尝试过,但我收到了相同的结果。 console.log 和 cmets 在输出中仍然可见。有什么想法吗? npm run serve 运行开发构建,不是吗? Terser 仅适用于生产版本。 @madflow 这可以解释很多。我正在 dist 构建上运行 npm run build -> npm run serve。在分发之前测试 dist 构建的正确命令是什么? (npm run build 正在设置 生产模式 对吗?) 答案如下:) 【参考方案1】:

首先:确保您正确配置Terser:

terserOptions: 
    ecma: 6,
    compress:  drop_console: true ,
    output:  comments: false, beautify: false 

npm run serve

通常是以下的快捷方式:

vue-cli-service

vue-cli-service --help

  Usage: vue-cli-service <command> [options]

  Commands:

    serve     start development server
    build     build for production
    inspect   inspect internal webpack config
    lint      lint and fix source files

所以当您的工作流程是上面提到的npm run build -&gt; cd dist -&gt; npm run serve 时,您实际上是在启动开发服务器,它不应用 Terser。

为了运行生产版本,您可以使用任何能够提供静态内容的webserver:

NodeJs 示例:

npm install -g serve
serve -s dist

npm install -g node-static
static dist

【讨论】:

感谢您的回答和解释。我现在正在使用 serve -s dist 运行构建,但日志和 cmets 仍在构建中 - 我的服务器上上传的构建也是如此。我打开了一个新问题来找到这个问题的根源。链接:***.com/questions/58328991/… 我更新了我的答案 - 当我像上面在 cmets 中提到的那样添加 ecma: 6 时,它对我有用。知道会很有趣...为什么...@Tom

以上是关于Vue CLI 3 使用 Terser 删除 console.log 和代码注释的主要内容,如果未能解决你的问题,请参考以下文章

在 webpack 4 vue cli 3 中禁用缓存加载器

如何在 webpack 中使用 Terser

Vue Cli 3 禁用代码拆分 - 无法摆脱哈希文件

使用 vue-cli3 删除插件

如何通过 vue-cli 3 配置 webpack 以使用 sass

如何删除 vue cli 2?