Comment utiliser Webpack pour minifier le code ES6?

j'utilise webpack et je veux déployer mon site. Si je minifier et bundle mon code JavaScript, j'ai cette erreur:

Parse error: jeton Inattendu: nom (Button)

Voici ma fourni le 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 combinées de code, le mot-clé export est supprimé. Dans le développement, il n'y a pas d'erreurs lancées. Ici vous pouvez trouver mon fichier de configuration de 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,
            },
        })
    ] : []
};

si je change PROD pour faux, je n'ai pas d'erreur, si c'est vrai, j'ai une erreur venant d'en haut. Ma question Est de savoir si je peux activer ES6 dans Webpack?

33
demandé sur H. Pauwelyn 2017-05-31 17:32:29

3 réponses

Je ne sais pas si vous cherchez toujours une réponse à cela, mais maintenant vous pouvez inclure la version bêta de uglifyjs-webpack-plugin comme un plugin webpack et il utilisera uglify-es qui peut minifier le code ES6.

npm install uglifyjs-webpack-plugin

et puis dans votre webpack.config.js:

const Uglify = require("uglifyjs-webpack-plugin");

module.exports = {
    entry: ...,
    output: ...,
    plugins: [
        new Uglify()
    ]
};
58
répondu user3432422 2018-03-09 17:35:01

ayant cette configuration webpack par défaut:

> npm list -g  uglifyjs-webpack-plugin
+-- 
| `-- webpack@3.10.0
|   `-- uglifyjs-webpack-plugin@0.4.6
`-- webpack@3.10.0
  `-- uglifyjs-webpack-plugin@0.4.6

ce qui suit a fonctionné pour moi avec un esnext objectif:

npm i -D uglifyjs-webpack-plugin

ce qui donne le maintenant local uglifyjs-webpack-plugin:

 > npm list  uglifyjs-webpack-plugin
 `-- uglifyjs-webpack-plugin@1.2.2    

webpack.config.js

const UglifyJSPlugin = require('uglifyjs-webpack-plugin')
...
plugins: [
    //new webpack.optimize.UglifyJsPlugin() @0.4.6 doesn't work
    new UglifyJSPlugin() // @1.2.2  works with esnext
]

Voir le responsable de messages:

2
répondu bvj 2018-02-28 22:50:11

vient de savoir que uglifyjs-webpack-plugin de plus, le code ES6 n'est plus minifié. Ils ont commencé à le faire dans certaines versions, mais alors uglify-es ils utilisés n'est plus maintenu donc ils sont retombés àici

Si vous voulez rapetisser ES6 code, veuillez jeter un oeil à terser-webpack-plugin

0
répondu Ajay Poshak 2018-10-05 12:28:30