I'm using webpack and want to deploy my site. If I minify and bundle my JavaScript code, I've got this error:
Parse error: Unexpected token: name (
Button
)
Here is my not bundled code:
'use strict';
export class Button { // <-- Error happens on this line
constructor(translate, rotate, text, textscale = 1) {
this.position = translate;
this.rotation = rotate;
this.text = text;
this.textscale = textscale;
}
}
Note in bundled code the keyword export
is removed. In development, there are no errors thrown. Here you could find my configuration file of WebPack:
var webpack = require('webpack');
var PROD = true;
module.exports = {
entry: "./js/entry.js",
output: {
path: __dirname,
filename: PROD ? 'bundle.min.js' : 'bundle.js'
},
module: {
loaders: [
{
test: /\.css$/,
loader: "style-loader!css-loader"
}
]
},
plugins: PROD ? [
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false
},
output: {
comments: false,
},
})
] : []
};
If I change PROD
to false, I've no error, if true I've got error from above. My question is can I enable ES6 in Webpack?
Not sure if you're still looking for an answer to this, but now you can include the beta version of uglifyjs-webpack-plugin as a webpack plugin and it'll use uglify-es which can minify ES6 code.
and then in your webpack.config.js:
Having this default webpack config:
the following worked for me with an esnext target:
yielding the now local uglifyjs-webpack-plugin:
webpack.config.js
See the related maintainer's posts:
Using the uglifyjs-webpack-plugin@1.2.2 solves my problem.
Also, in my webpack.config.js
Just came to know that
uglifyjs-webpack-plugin
also doesn't minify ES6 code anymore. They started doing so in some versions, but thenuglify-es
they used is no more maintained so they fell back touglify-js
which doesn't support ES6 minification. Full Details hereIf you want to minify
ES6
code, please take a look at terser-webpack-pluginInstall the plugin with NPM via:
or with yarn:
Then, add the plugin in the in the
optimization
section of your webpack config: