0

Ich versuche, eine Alternative für plovr während der Entwicklung zu finden, weil plovr ist ein bisschen weit zurück und upgrade Google Schließung jedes Mal wird dort lästig.Verlangsamung google Schließung Laufzeit mit Schluck

Also überlegte ich, Schluck zu verwenden. Ich habe einen gulp Webserver mit Hilfe von gulp connect eingerichtet und bei einem Fallback löst er die Google-Closure-Kompilierung aus, dann wartet er, bis die Datei generiert ist, und dann wird sie dem Client bereitgestellt. Das Problem, mit dem ich konfrontiert bin, ist, dass die Kompilierzeit viel größer ist als plovr ~ 40s vs ~ 20s. Für einen Frontend-Entwickler, der nach einer kleinen Änderung lange auf das Laden der Seite warten muss. Irgendeine Idee, was getan werden kann, um die Kompilierzeit des Abschlusscompilers zu optimieren. Hier ist meine gulpfile.js, um Ihnen eine Idee über meine Einrichtung zu geben.

var gulp = require('gulp'), 
    closureCompiler = require('google-closure-compiler').gulp({ 
     extraArguments: ['-Xms2048m'] 
    }), 
    fs = require('fs-extra'), 
    grepit = require('grepit'), 
    connect = require('gulp-connect'), 
    sleep = require('system-sleep'), 
    outputPath = './target/js', 
    pathToJavascriptCode = './project/', 
    compilationLevel = 'ADVANCED', 
    entryPoint = undefined; 

gulp.task('js-clean', function() { 
    fs.removeSync(outputPath); 
}); 

gulp.task('js-compile', function() { 
    var outputFileName = entryPoint + '.' + compilationLevel.toLowerCase() + '.js.compiled'; 
    return gulp.src([ 
    pathToJavascriptCode + '/**/*.js', 
    './node_modules/google-closure-library/closure/goog/**/*.js', 
    '!./node_modules/google-closure-library/closure/goog/**/*_test.js'], 
    {base: './'}) 
     .pipe(closureCompiler({ 
      closure_entry_point: entryPoint, 
      externs: [ 
       './public/javascripts/libs/jquery-1.7-externs.js'], 
      compilation_level: compilationLevel, 
      warning_level: 'VERBOSE', 
      js_output_file: './' + outputFileName, 
      manage_closure_dependencies: true, 
      language_in: 'ECMASCRIPT6', 
      language_out: 'ECMASCRIPT5' 
     })) 
     .pipe(gulp.dest(outputPath)) 
     .pipe(connect.reload()); 
}); 

gulp.task('webserver', function() { 
    connect.server({ 
     root: ['./target/js/'], 
     port: 8080, 
     livereload: true, 
     middleware: function() { 
      return [function(req, res, next) { 
       res.setHeader('Access-Control-Allow-Origin', '*'); 
       next(); 
      }]; 
     }, 
     fallback: function(req, res) { 
      var requestedFileName = req.url.replace('/', ''); 
      var requestedFileNameParts = requestedFileName.split('.'); 

      compilationLevel = requestedFileNameParts[3] === 'simple' ? 'SIMPLE' : 'ADVANCED'; 
      entryPoint = requestedFileNameParts[2] !== 'all' ? requestedFileNameParts.splice(0, 3).join('.') : undefined; 
      gulp.start('js-compile'); 

      var path = './target/js' + req.url; 
      while(fs.existsSync(path) !== true) { 
       console.log(path + ' does not exist yet, sleeping for 1 second'); 
       sleep(1000) 
      } 
      return path; 
     } 
    }) 
}); 


gulp.task('watch', function() { 
    gulp.watch('./project/pauljs/**/*.js', ['js-clean']); 
}); 

gulp.task('default', ['js-clean', 'webserver', 'watch']); 

Nach einigen Recherchen habe ich das Problem denke, die langsame Startzeit des Jvm ist, fand ich diese https://www.npmjs.com/package/closure-gun die nailgun verwendet google-Verschluss-Compiler zu laufen, aber ich bin nicht sicher, wie kann ich dies mit meinem aktuellen Setup integrieren , werden alle Zeiger geschätzt werden :)

Antwort

Verwandte Themen