webpack - UgifyJS 失败
webpack - UgifyJS fails
我正在尝试将 UglifyJS 插件添加到我的 webpack 配置中。入口点很简单,如下所示:
import Vue from 'vue';
import Comp from './components/comp.vue';
Vue.component('somecomponent', {
render: h => h(Comp)
});
当我尝试 运行 webpack 时它抛出一个错误:
ERROR in source1.bundle.js from UglifyJs
Unexpected token: operator (>) [./frontend/source1.js:7,0][source1.bundle.js:80,15]
我错过了什么?这是我的配置
const path = require('path');
const webpack = require('webpack');
const CleanWebpackPlugin = require('clean-webpack-plugin');
module.exports = {
entry: {
source1: './frontend/source1.js',
source2: './frontend/source2.js'
},
output: {
filename: '[name].bundle.js',
path: path.resolve(__dirname, 'static/bundles')
},
plugins: [
new CleanWebpackPlugin(['static/bundles']),
new webpack.optimize.UglifyJsPlugin({
sourceMap: true,
compress: {
warnings: false
}
})
],
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader',
options: {
loaders: {
}
}
}
]
},
resolve: {
alias: {
vue$: 'vue/dist/vue.esm.js'
}
}
};
UglifyJS 确实支持箭头函数,但它可能不喜欢您的简写方式。你得到相同的结果吗...
Vue.component('somecomponent', {
render: (h) => { h(Comp) }
});
您不必这样做,如果这样做有效,而不是其他方式,则很可能是 Uglify.js 的错误。
Uglify 目前不处理 ES6,因此在通过 UglifyJS 放置任何内容之前,您需要先将其转换为 ES5。通常你会用 babel-loader 来做到这一点。
检查https://github.com/babel/babel-loader
module: {
rules: [
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: ['env']
}
}
}
]
}
我正在尝试将 UglifyJS 插件添加到我的 webpack 配置中。入口点很简单,如下所示:
import Vue from 'vue';
import Comp from './components/comp.vue';
Vue.component('somecomponent', {
render: h => h(Comp)
});
当我尝试 运行 webpack 时它抛出一个错误:
ERROR in source1.bundle.js from UglifyJs
Unexpected token: operator (>) [./frontend/source1.js:7,0][source1.bundle.js:80,15]
我错过了什么?这是我的配置
const path = require('path');
const webpack = require('webpack');
const CleanWebpackPlugin = require('clean-webpack-plugin');
module.exports = {
entry: {
source1: './frontend/source1.js',
source2: './frontend/source2.js'
},
output: {
filename: '[name].bundle.js',
path: path.resolve(__dirname, 'static/bundles')
},
plugins: [
new CleanWebpackPlugin(['static/bundles']),
new webpack.optimize.UglifyJsPlugin({
sourceMap: true,
compress: {
warnings: false
}
})
],
module: {
rules: [
{
test: /\.vue$/,
loader: 'vue-loader',
options: {
loaders: {
}
}
}
]
},
resolve: {
alias: {
vue$: 'vue/dist/vue.esm.js'
}
}
};
UglifyJS 确实支持箭头函数,但它可能不喜欢您的简写方式。你得到相同的结果吗...
Vue.component('somecomponent', {
render: (h) => { h(Comp) }
});
您不必这样做,如果这样做有效,而不是其他方式,则很可能是 Uglify.js 的错误。
Uglify 目前不处理 ES6,因此在通过 UglifyJS 放置任何内容之前,您需要先将其转换为 ES5。通常你会用 babel-loader 来做到这一点。
检查https://github.com/babel/babel-loader
module: {
rules: [
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: ['env']
}
}
}
]
}