我正在尝试设置一个开发样板,它也可以轻松地将Vue.js项目推送到NPM。
我遇到了webpack.prod.js
文件的问题,错误是:
ERROR in build.js from UglifyJs
Unexpected token: operator (>)
uglify的代码是:
// 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
配置。
我可能没有看到可以轻易修复的内容,但我不知道这里出了什么问题。
答案 0 :(得分:0)
使用webpack simple存储库中的.babelrc
文件解决了我的问题。我不确定这里发生了什么:
{
"presets": [
["env", { "modules": false }]
]
}
据我所知,.babelrc
包含告诉babel如何转换代码的插件和选项。
我恢复了modules
选项的确切含义:
https://babeljs.io/docs/plugins/preset-env/#optionsmodules
它说了以下内容:
“amd”| “umd”| “systemjs”| “commonjs”| false,默认为 “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转换。
随意发表评论,并纠正我的任何一个问题。我将此保存以供将来参考,并让其他人看到谁也可能会遇到这种情况。