【问题标题】:Uglifyjs Invalid option CacheKeys and minifyUglifyjs 无效选项 CacheKeys 和缩小
【发布时间】:2018-08-05 05:29:10
【问题描述】:

这个选项在 UglifyJs 插件中不可用是否有原因。我正在按照https://webpack.js.org/plugins/uglifyjs-webpack-plugin/ **

关注文档

ValidationError: UglifyJs 插件无效选项

options['ecma'] 是无效的附加属性 options['cacheKeys'] 是无效的附加属性 options['minify'] 是无效的附加属性

package.json

"terser": "^3.8.1",
"uglifyjs-webpack-plugin": "^1.2.7",
"webpack": "^4.16.3",
"webpack-cli": "^3.1.0",
"webpack-dev-server": "^3.1.5",
"webpack-hot-middleware": "^2.22.3"

webpack.config

minimizer: [
      new UglifyJsPlugin({
        // Uncomment lines below for cache invalidation correctly
        ecma:6,
        cache: true,
        cacheKeys:(defaultCacheKeys,file) =>{
          return Object.assign(
            {},
            defaultCacheKeys,
            { terser: require('terser/package.json').version },
          );
        },
        minify:(file, sourceMap) => {
          // https://github.com/fabiosantoscode/terser#minify-options
          const terserOptions = { parse: {
                                        // parse options
                                    },
                                    compress: {
                                        // compress options
                                        "ecma": 6
                                    },
                                    mangle: {
                                        // mangle options

                                        properties: {
                                            // mangle property options
                                        }
                                    },
                                    output: {
                                        // output options
                                    },
                                    sourceMap: {
                                        // source map options
                                    },
                                    ecma: 5, // specify one of: 5, 6, 7 or 8
                                    keep_classnames: false,
                                    keep_fnames: false,
                                    ie8: false,
                                    module: false,
                                    nameCache: null, // or specify a name cache object
                                    safari10: false,
                                    toplevel: false,
                                    warnings: false };

          if (sourceMap) {
            terserOption.sourceMap = {
              content: sourceMap,
            };
          }

          return require('terser').minify(file, terserOptions);
        }
      })
    ]

【问题讨论】:

    标签: uglifyjs webpack-4


    【解决方案1】:

    new UglifyJsPlugin 期望一个带有 uglifyOptions 键的对象,这里缺少该对象。请按照以下方式更新 webpack 配置。

    [
      new UglifyJsPlugin({
        uglifyOptions: {
          ecma: 8,
          ...
        }
      })
    ]
    

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题。我的错误是我没有遵循 symfony 中的命名规则。

      资产: 过滤器: 丑陋的: # uglifyjs 可执行文件的路径 垃圾箱:/usr/local/bin/uglifyjs

      我通过将过滤器别名从 uglifyjs 更改为 uglifyjs2 解决了

      资产: 过滤器: 丑陋的js2: # uglifyjs 可执行文件的路径 bin: /usr/local/bin/uglifyjs

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-14
        • 1970-01-01
        • 2012-02-07
        • 1970-01-01
        • 2020-06-27
        • 2018-06-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多