javascript - Webpack UglifyJS 遇到意外 token

标签 javascript webpack vue.js vuejs2 webpack-2

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

相关文章:

javascript - 在 webpack bundle 中运行 Webpack Dev Server

vue.js - vue一文件,echarts报错xAxis "0"not found

javascript - 如何在 Vue.js 中使用 MaterializeCss?

javascript - 根据日期值使用 jQuery 对表格进行排序

php - 网站使用的语言

javascript - Angular js 不起作用

javascript - vue mapGetters 没有准时到达

javascript - 传递数组数据

node.js - Webpack Angular 4 启动问题

javascript - 从生产版本中删除依赖项