J'ai terminé un projet et il est maintenant temps de le construire. J'utilise un projet passe-partout et je ne comprends toujours pas tout ce qui se passe sous le capot avec npm/webpack. Lorsque je lance "npm start", je reçois le message d'erreur:
ERROR in bundle.js from UglifyJs
SyntaxError: Unexpected token: punc ()) [bundle.js:848,29]
Après une heure de recherche sur Internet sur ce problème, je ne parviens toujours pas à le résoudre. D'après ce que j'ai compris, ce problème se pose car Uglify n'aime pas encore l'ES2016. Cependant, les solutions que j'ai trouvées sur Internet ne semblent pas fonctionner ou n'ont pas assez de sens pour moi.
J'ai trouvé cette question stackoverflow et j'ai modifié la ligne webpack dans le fichier package.json de mon projet en:
"webpack": "fulls1z3/webpack#v2.1.0-beta.27-harmony"
Mais cela n'a pas fonctionné. L’autre suggestion de falsifier WebPack dépasse mon entendement pour le moment.
J'ai également essayé d'exécuter babel sur mon dossier src en suivant une autre suggestion, mais cela ne semblait rien faire ou je l'avais mal exécuté.
Quelqu'un at-il une bonne solution à ce problème? Je suis assez bloqué pour le moment et je n'ai pas encore eu le temps d'apprendre le programme npm/webpack pour bien comprendre ce qui se passe.
Très appréciée!
Oui, UglifyJS ne prend en charge que la syntaxe ES5. Vous devrez configurer correctement Babel pour transformer vos sources en syntaxe ES5.
Puisque vous utilisez Webpack 2, la configuration minimale de Babel dont vous avez besoin est la suivante:
{
"presets": [
["es2015", {"modules": false}]
]
}
Cela nécessitera le préréglage babel-preset-es2015
. Jetez ce qui précède dans un .babelrc
et votre babel-loader
se chargera du reste.
Vous pouvez également essayer babelify
, qui est le minificateur moderne de Babel prenant en charge la syntaxe ES6. Si vous ciblez les nouveautés Newever, je vous le recommande vivement.
essayez mon cfg , actualité je trouve la réponse in https://github.com/joeeames/WebpackFundamentalsCourse/issues/3
npm install babel --save-dev
npm install babel-preset-es2015 --save-dev
{ test: /\.js$/, exclure: /(node_modules|bower_components)/, utilisation: { chargeur: 'babel-loader', requête: { Presets: ["es2015"] } } },
Il existe deux versions de UglifyJS - ES5 et ES6 (Harmony), voir sur git
La version ES5 est fournie par défaut avec tous les plugins, mais si vous installez une version Harmony explicitement, ces plugins l'utiliseront à la place.
package.json
"uglify-js": "git+https://github.com/mishoo/UglifyJS2.git#harmony"
ou
npm install --save uglify-js@github:mishoo/UglifyJS2#harmony
yarn add git://github.com/mishoo/UglifyJS2#harmony --dev
Si vous souhaitez contrôler la version du plugin webpack, vous devez également l’installer et l’utiliser explicitement. Ceci remplace le webpack.optimize.UglifyJsPlugin
construit
npm install uglifyjs-webpack-plugin --save
yarn add uglifyjs-webpack-plugin
Fichier de configuration Webpack
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
module.exports = {
entry: {...},
output: {...},
module: {...},
plugins: [
new UglifyJSPlugin()
]
};
Pour plus d'informations sur le Webpack, voir
https://github.com/webpack-contrib/uglifyjs-webpack-plugin#install
https://github.com/mishoo/UglifyJS2/tree/harmony
assurez-vous que vous avez ajouté le fichier .babelrc
à la racine de votre dossier et qu'il contient cette
{
"presets": [
"es2015"
]
}