我正在尝试建立一个开发样板,它也可以轻松地将 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也可以避免转译。
请随意发表评论并纠正我的任何问题。我将其保存下来以供将来引用,并供其他人看看谁也可能会遇到这个问题。
关于javascript - Webpack UglifyJS 遇到意外 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45321469/