有没有办法保留许可证评论?

时间:2018-01-23 18:11:43

标签: javascript webpack babel babel-loader

我在babel-loader文件中使用webpack.config.js,但我注意到它删除了表单的许可证注释:

/*! whatever **/

有没有办法保存它们? 我注意到babel有comments选项,但我想这会保留任何评论,而不仅仅是许可证。

const webpack = require('webpack');

module.exports = {
  resolve: {
    alias: {
      'vue$': 'vue/dist/vue.js'
    }
  },
  module: {
    rules: [
      {
        test: /\.vue$/,
        loader: 'vue-loader',
        options: {
          loaders: {
            scss: 'vue-style-loader!css-loader!sass-loader',
            js: 'babel-loader'
          }
        }
      },
      {
        test: /\.js$/,
        use: {
          loader: 'babel-loader',
        }
      }
    ]
  },
  plugins: [
    new webpack.optimize.UglifyJsPlugin({
      compress: {
        warnings: false,
        drop_console: false,
      }
    })
  ],
};

我已经尝试过:

plugins: [
    new webpack.optimize.UglifyJsPlugin({
      output:{
        comments: true
      }
})

以及comments: '/^!/'comments: /^!/。 什么都行不通。

如果我从webpack配置中删除整个plugins选项,它只会保留注释。

我还尝试使用许可证评论,例如:

/** comments */

/*! comments */

/*! @license comments */

/*! @preserve comments */

3 个答案:

答案 0 :(得分:2)

这是bug,自2015年以来一直在webpack / uglify中使用,但从未得到修复。

他们推测是使用this来解决问题,而是将def check(myList): if len(myList) <= 1: return False if myList[0] == myList[1]: return True if check([myList[0]] + myList[2:]): return True if check(myList[1:]): return True return False print(check([1,2,2,3,4])) Sample output: 2 添加到extractComments,但仍然无法在some people上使用,因此一年后的2019年{{3} }已打开,可以修复它。

true

因此,这是一个已经存在多年的已知错误。也许确实存在骇客,但这是一般情况。

答案 1 :(得分:0)

尝试添加public List<CategoryNew> ConverModelToNew(List<CategoryModel> lstCatModel){ List<CategoryNew> lstCatNew = new List<CategoryNew>(); foreach(var item in lstCatModel){ lstCatNew.Add(new CetagoryNew(item)); } return lstCatNew; } 选项。

output

我不确定它是否会起作用,因为我从未使用它。 有关详细信息,请参阅this

请告诉我它是否有效。

答案 2 :(得分:0)

工作技巧:

const WrapperPlugin = require('wrapper-webpack-plugin');
let licenseComments = [];

module.exports = {
    ...
    optimization: {
        minimize: true,
        minimizer: [
            new UglifyJsPlugin({}),
            new WrapperPlugin({
                header: function () {
                    var unique = licenseComments.filter((v, i, a) => a.indexOf(v) === i); 
                    return unique.map(x => '/*' + x + '*/').join('\n');
                }
            })
        ],
    },
    module: {
        {
            test: /\.js$/,
            use: {
                loader: 'babel-loader',
                options: {
                    shouldPrintComment: (val) => {
                        if (/license/.test(val)) {
                            licenseComments.push(val);
                        }
                        return false;
                    },
                }
            }
        }
    ...