无法在webpack bundle js文件中删除注释

时间:2017-01-30 14:59:53

标签: javascript reactjs module webpack

我一直试图在webpack捆绑的js文件中删除注释。 我已经尝试了几种方法,但它仍然没有工作,我得到了像

这样的评论
"/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\ ...

为此,捆绑文件变得越来越大。目前巨大的1.6mb大小。 我试过这个

new webpack.optimize.UglifyJsPlugin({
        sourceMap: false,
        compress: {
            sequences: true,
            dead_code: true,
            conditionals: true,
            booleans: true,
            unused: true,
            if_return: true,
            join_vars: true,
            drop_console: true
        },
        mangle: {
            except: ['$super', '$', 'exports', 'require']
        },
        output: {
            comments: false
        }
    })

也是这个

new webpack.optimize.UglifyJsPlugin({
        compress: { warnings: false },
        sourceMap: false,
        output: false
    })

还将环境设置为生产

set NODE_ENV=production

我无法理解我错在哪里。 请帮忙。 提前谢谢。

4 个答案:

答案 0 :(得分:7)

即使您出于法律原因设置UglifyJsPlugin

@licence也不会删除comments: false条评论。你可以阅读它on webpack GitHub issue

如果您要删除此类评论(风险自负),则应搜索其他加载者,例如webpack-comment-remover-loaderstripcomment-loader

答案 1 :(得分:1)

这就是你需要的:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<table>
  <tr>
    <td>Default row</td>
  </tr>
</table>
<button id='add-row'>Add row</button>

来自here

这是来自Webpack的行,@ Everettss是对的。

new UglifyJsPlugin({
    comments: false,
}),

你可以查看正则表达式,确认索克拉stated

enter image description here

我不确定UglifyJsPlugin,但通常如果您在其他地方提供法律声明,则应删除所有评论。

如果您的律师确认这是正常的,您可以尝试调整File: /webpack/lib/optimize/UglifyJsPlugin.js 097: let output = {}; 098: output.comments = Object.prototype.hasOwnProperty.call(options, "comments") ? options.comments : /^\**!|@preserve|@license/; 099: output.beautify = options.beautify; 100: for(let k in options.output) { 101: output[k] = options.output[k]; 102: } ,以便正则表达式失败,评论将不再存在。

答案 2 :(得分:0)

对于webpack 4,这对我有用:

// webpack.config.js

const UglifyJsPlugin = require('uglifyjs-webpack-plugin');

module.exports = {
  // other config properties...

  optimization: {
    minimizer: [
      new UglifyJsPlugin({
        uglifyOptions: {
          output: {
            comments: false
          }
        }
      })
    ]
  }
};

您可以在official docs中找到更多信息。

答案 3 :(得分:-1)

如果您想要删除 @words ,并且无法在线找到解决方案,我建议您执行查找和替换。
编写正则表达式以查找并替换为空白字符。