我正在尝试建立一个开发样板,这也可以很容易地将一个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
当我运行ES6时,该项目使用Babel将compile转换为npm run production,使用Webpack将其编译为UMD格式。此命令使用webpack.prod.js配置。
我可能没有看到什么东西可以很容易地修复,但我不知道哪里出了问题。
发布于 2017-07-26 09:25:47
使用来自.babelrc存储库的webpack朴素文件解决了我的问题。不过,我不知道这是怎么回事:
{
"presets": [
["env", { "modules": false }]
]
}据我所知,.babelrc包含告诉babel如何转换我的代码的插件和选项。
我再次提到了modules选项的确切含义:
https://babeljs.io/docs/plugins/preset-env/#optionsmodules
它说:
“\”\x{e76f}\x\时,默认为"commonjs“。 启用将ES6模块语法转换为另一种模块类型。 将此设置为false不会转换模块。
因为我希望所有用户都可以使用我的包,并且我的webpack产品配置使用:
libraryTarget: 'umd'要将我的代码编译成umd格式,这不会与"modules": false冲突吗?
我还习惯于在es2015文件中看到.babelrc预置。这里无处可寻。这现在是默认的吗?
es2015选项似乎已经完全删除:
https://github.com/vuejs-templates/webpack/commit/424cd3f6d101ffeb57f48bca55d7951b35af60e0
从我到目前为止所读到的,这是因为Webpack 2已经知道如何在本地使用ES6模块,因此"modules": false禁用并阻止了babel的转换。
请随时留下评论,并纠正我的任何这一点。我将此留待将来参考,并让其他人看看谁可能也会跌跌撞撞地陷入这一困境。
https://stackoverflow.com/questions/45321469
复制相似问题