Webpack UglifyJS 运行 变成意外的令牌

Webpack UglifyJS running into unexpected token

我正在尝试设置一个开发样板文件,它也可以轻松地将 Vue.js 项目推送到 NPM。

我 运行 我的 webpack.prod.js 文件出了问题,错误是:

ERROR in build.js from UglifyJs
Unexpected token: operator (>)

要加丑的代码是:

// minify with dead-code elimination
new webpack.optimize.UglifyJsPlugin({
    compress: {
        warnings: false
    }
})

这是我的项目和它似乎出错的确切文件:

https://github.com/stephan-v/vue-inline-svg/blob/master/webpack/webpack.prod.js

项目在我运行npm run production时使用Babel转ES6,Webpack编译UMD格式。此命令使用 webpack.prod.js 配置。

我可能没有看到可以轻松修复的问题,但我不知道这里出了什么问题。

使用 webpack simple 存储库中的 .babelrc 文件解决了我的问题。不过我不确定这里发生了什么:

{
    "presets": [
        ["env", { "modules": false }]
    ]
}

据我所知,.babelrc 包含告诉 babel 如何转换我的代码的插件和选项。

我查看了 modules 选项的具体内容:

https://babeljs.io/docs/plugins/preset-env/#optionsmodules

内容如下:

"amd" | "umd" | "systemjs" | "commonjs" | false, defaults to "commonjs".

Enable transformation of ES6 module syntax to another module type.

Setting this to false will not transform modules.

因为我希望所有用户都可以使用我的包并且我的 webpack 生产配置使用:

libraryTarget: 'umd'

要将我的代码编译成 umd 格式,这不会与 "modules": false 冲突吗?

我也习惯在.babelrc文件中看到一个es2015预设。这是无处可寻的。这是现在的默认设置吗?

似乎 es2015 选项已被完全删除:

https://github.com/vuejs-templates/webpack/commit/424cd3f6d101ffeb57f48bca55d7951b35af60e0

从我目前所读的内容来看,这是因为 Webpack 2 已经知道如何在本地使用 ES6 模块,因此 "modules": false 禁用并阻止 babel 转译还有。

请随时发表评论并纠正我的任何问题。我将此保存以供将来参考,并供其他人查看可能也会遇到此问题的人。