J'essaie de minimiser mes fichiers de script pour lesquels j'utilise gulp task runner Et j'essaye le gulp-uglify plugin
Code:
gulp.task('concat', function() {
return gulp.src('app/**/*.js')
// .pipe(concat('script.js'))
.pipe(uglify())
.pipe(gulp.dest('./dist/'))
});
mais je reçois une erreur comme
quand j'essaye de lancer une tâche en tant que gulp concat Toute aide serait appréciée
L'erreur principale est générée lorsque vous utilisez le format ES6. Utilisez le module gulp-uglify-es au lieu de "gulp-uglify" pour remédier à cette erreur.
var uglify = require('gulp-uglify-es').default;
Remarque: gulp-uglify-es n'est plus maintenu. Vous voudrez peut-être utiliser terser
/gulp-terser
au lieu:
Pour voir l'erreur dans la console:
var gutil = require('gulp-util');
gulp.task('concat', function() {
return gulp.src('app/**/*.js')
// .pipe(concat('script.js'))
.pipe(uglify())
.on('error', function (err) { gutil.log(gutil.colors.red('[Error]'), err.toString()); })
.pipe(gulp.dest('./dist/'))
});
Pour trouver le fichier exact, avec le numéro de ligne du registre d’erreur et exécuter cette tâche:
var pump = require('pump');
gulp.task('uglify-error-debugging', function (cb) {
pump([
gulp.src('app/**/*.js'),
uglify(),
gulp.dest('./dist/')
], cb);
});
Avez-vous utilisé le format ES6 dans votre fichier de script? Si c'est le cas, essayez ES5 maintenant car lorsque vous faites gulp-uglify, il ne comprend pas le format ES6 dès maintenant et après cela, essayez votre code.
gulp.task('concat', function() {
return gulp.src('app/**/*.js')
.pipe(concat('script.js'))
.pipe(uglify())
.pipe(gulp.dest('./dist/'))
});
et lancez la tâche gulp concat
ça va marcher
Je pense que les principales réponses ici n'expliquent pas comment obtenir l'erreur. Les docs ont une section sur la gestion des erreurs:
gulp-uglify émet un événement 'error' s'il est incapable de réduire un fichier spécifique
Donc, capturez simplement l'erreur et faites ce que vous voulez (comme vous connecter à la console) pour voir le nom du fichier, le numéro de ligne et des informations supplémentaires:
uglify().on('error', console.error)
ou dans un contexte plus large:
gulp.task('foo', () => {
return gulp.src([
'asset/src/js/foo/*.js',
'asset/src/js/bar/*.js',
])
.pipe(uglify().on('error', console.error))
.pipe(concat('bundle.js'))
.pipe(gulp.dest('./'));
});
Cela vous donne une erreur super utile!
{ GulpUglifyError: unable to minify JavaScript
at [stack trace])
cause:
{ SyntaxError: Continue not inside a loop or switch
[stack trace]
message: 'Continue not inside a loop or switch',
filename: 'ProductForm.js',
line: 301,
col: 37,
pos: 10331 },
plugin: 'gulp-uglify',
fileName:
'/asset/src/js/foo/ProductForm.js',
showStack: false }
Pour moi, c'était une option obsolète "preserveComments" qui a généré l'erreur (et qui a complètement écrasé le script).
Trouvé le problème en utilisant:
gulp.task('concat', function() {
return gulp.src('app/**/*.js')
.pipe(uglify())
.on('error', function (err) { console.log( err ) })
.pipe(gulp.dest('./dist/'))
});
Essayez d'utiliser ceci
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var minifyJS = require('gulp-minify');
gulp.task('concat', function() {
return gulp.src('app/**/*.js')
.pipe(minifyJS())
.pipe(concat('bundle.min.js'))
.pipe(uglify({ mangle: false }))
.pipe(gulp.dest('./dist/'));
});
vous pouvez avoir une erreur de syntaxe ou utiliser la syntaxe ES6. vous pouvez essayer https://skalman.github.io/UglifyJS-online/ premièrement.
L'erreur principale de Unable to minifies JavaScript est le chemin introuvable. Vous pouvez utiliser la tâche usemin Pour cela, vous avez besoin de:
$ Sudo npm install gulp-usemin --save-dev
$ Sudo npm install gulp-livereload --save-dev
$ Sudo npm install gulp-util --save-dev
et nécessite:
var usemin = require('gulp-usemin');
var livereload = require('gulp-livereload');
var gutil = require('gulp-util'); //gutil for error display
gulp.task('usemin',['jshint'], function(){
return gulp.src('./app/index.html')
.pipe(usemin({
css: [minifycss(),rev()],
scripts: [uglify().on('error', function(err) {gutil.log(gutil.colors.red('[Error]'), err.toString());this.emit('end');}),rev()]
}))
.pipe(gulp.dest('dist'))
.pipe(livereload());
});
Change the js: [uglify(), rev()] to scripts: [uglify(), rev()]