2016-12-03 1 views
1

Ich verwende google-closure-compiler und schlucke meine angularjs-Dateien zu minimieren.Mit Schluck mit Google-Abschluss zu kompilieren JS-Dateien in einzelne Dateien anstelle einer einzigen Datei

Ich habe die 3 js Dateien in app/js Ordner. Sie sind controller.js, app.js, services.js.

Hier ist mein gulpfile Code:

var closureCompiler = require('google-closure-compiler').gulp(); 

gulp.task('js-closure', function() { 
    return gulp.src('app/js/*.js', {base: './'}) 
     .pipe(closureCompiler({ 
      compilation_level: 'SIMPLE_OPTIMIZATIONS', 
      warning_level: 'QUIET', 
      language_in: 'ECMASCRIPT6_STRICT', 
      language_out: 'ECMASCRIPT5_STRICT', 
      output_wrapper: '(function(){\n%output%\n}).call(this)', 
      js_output_file: 'output.min.js' 
     })) 
     .pipe(gulp.dest('./dist/js')); 
}); 

der Code Was tut, ist die 3 js Dateien in einer einzigen Datei Was ich will, ist zu kompilieren, die 3 js Dateien in 3 separate js output.min.js

kompilieren Dateien controller.min.js, app.min.js, services.min.js

Antwort

5

Soweit ich sehen kann, gibt es keine Möglichkeit zu vermeiden, dass Ihre Dateien vom Google Closure Compiler kombiniert werden. Auch wenn Sie die js_output_file Option weglassen, wird einfach der Name der Ausgabedatei compiled.js. Das bedeutet, dass Sie den Closure Compiler für jede Datei aufrufen müssen.

Mit dem Plugin können Sie das ganz einfach tun. Sie haben nur den Wert von js_output_file für jede Eingabedatei, um zu bestimmen (im Grunde ersetzen .js mit .min.js in jedem Dateinamen):

var flatmap = require('gulp-flatmap'); 
var path = require('path'); 

gulp.task('js-closure', function() { 
    return gulp.src('app/js/*.js', {base: './'}) 
    .pipe(flatmap(function(stream, file) { 
     return stream.pipe(closureCompiler({ 
     compilation_level: 'SIMPLE_OPTIMIZATIONS', 
     warning_level: 'QUIET', 
     language_in: 'ECMASCRIPT6_STRICT', 
     language_out: 'ECMASCRIPT5_STRICT', 
     output_wrapper: '(function(){\n%output%\n}).call(this)', 
     js_output_file: path.basename(file.path).replace(/js$/, 'min.js') 
     })) 
    })) 
    .pipe(gulp.dest('./dist/js')); 
}); 
+0

Dank! Ich habe getestet, dass deine Antwort perfekt funktioniert. Upvoted und ausgewählt als die richtige Antwort. – user781486

+0

Sie können die Codeaufteilung verwenden, um separate Ausgabedateien zu erstellen, aber es ist nicht klar, dass dies die Absicht ist. Für nicht verwandte Dateien müssen Sie den Compiler für jeden einzeln aufrufen (wie diese Antwort zeigt). –

Verwandte Themen