2015-05-28 22 views
9

Ho la seguente operazione:Perchè non è gulp-uglify mangling i nomi delle mie variabili?

var uglify = require('gulp-uglify'); 

gulp.task('scripts', function() { 
    gulp.src('./src/scripts/*.js') 
    .pipe(concat('main.js')) 
    .pipe(uglify()) 
    .pipe(gulp.dest('./dist')); 
}); 

E i seguenti 2 file JavaScript, test1.js:

var testOneOutput = 'function one'; 
console.log(testOneOutput); 

E test2.js

var testTwoOutput = 'function two'; 
console.log(testTwoOutput); 

E tutte le directory sono di setup correttamente. Anche se quando eseguo il compito, non ho alcuna indicazione sul fatto che il lavoro è ugolante. La concatenazione funziona benissimo però. Mi sto perdendo qualcosa?

risposta

14

Negli script testOneOutput e testTwoOutput sono variabili globali e per impostazione predefinita gulp-uglify Mangles solo Vars locali.

Inserisci il tuo codice in una funzione e vedrai un po 'di manomissione.

function go() { 
    var testOneOutput = 'function one'; 
    console.log(testOneOutput); 
} 
1

Eseguire prima il uglify. Quindi concat i file danneggiati.

gulp.task('scripts', function() { 
    gulp.src('./src/scripts/*.js') 
    .pipe(uglify()) 
    .pipe(concat('main.js')) 
    .pipe(gulp.dest('./dist')); 
}); 
2

Si può dare {mangle: {toplevel: true}} opzione se si vuole manipolare le funzioni di alto livello pure.

uglify({mangle: {toplevel: true}})