Webpack UglifyJS遇到意外令牌

时间:2017-07-26 08:31:25

标签: javascript webpack vue.js vuejs2 webpack-2

我正在尝试设置一个开发样板,它也可以轻松地将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配置。

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

1 个答案:

答案 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转换。

随意发表评论,并纠正我的任何一个问题。我将此保存以供将来参考,并让其他人看到谁也可能会遇到这种情况。