2015-05-28 7 views
9

ich die folgende Aufgabe haben:Warum schlucke ich meine Variablennamen nicht?

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

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

Und die folgenden 2 Javascript-Dateien, test1.js:

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

Und test2.js

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

Und alle Verzeichnisse sind Setup korrekt. Obwohl, wenn ich die Aufgabe ausführen, habe ich keinen Hinweis darauf, ob die hässliche Arbeit. Die Verkettung funktioniert jedoch gut. Fehle ich etwas?

Antwort

14

In Ihrer Skripte testOneOutput und testTwoOutput sind globale Variablen und standardmäßig gulp-uglify mangles nur lokale Vars.

Setzen Sie Ihren Code in eine Funktion und Sie werden einige Mangling sehen.

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

Führen Sie zunächst die uglify aus. Dann concat die Uglified-Dateien.

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

Sie können {mangle: {toplevel: true}} Option geben, wenn Sie auch Ihre Top-Level-Funktionen zerfleischen wollen.

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