0

plovr이 조금 뒤떨어져 있고 매번 Google 클로징을 업그레이드하는 것이 번거로므로 개발하는 동안 plovr에 대한 대안을 찾으려고합니다.꿀꺽 마찰을 사용하여 Google 클로저 실행 시간 감소

그래서 저는 꿀꺽 꿀꺽 삼키는 것을 고려했습니다. gulp를 사용하여 꿀꺽 꿀꺽 꿀꺽 꿀꺽 꿀꺽 꿀꺽 꿀꺽 꿀꺽 마시는 웹 서버를 설정하고 대체로 Google 클로저 컴파일을 시작한 다음 파일이 생성 될 때까지 기다렸다가 클라이언트에게 제공합니다. 내가 직면하고있는 문제는 컴파일 시간이 plovr ~ 40s ~ 20s보다 훨씬 큽니다. 작은 변경 후에 페이지가로드 될 때까지 기다리는 데 시간이 오래 걸리는 프론트 엔드 개발자에게 적합합니다. 클로저 컴파일러의 컴파일 시간을 최적화하기 위해 수행 할 수있는 작업 여기 내 gulpfile.js는 내 설정에 대한 아이디어를 제공합니다.

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']); 

내가 문제가 JVM의 느린 시작 시간 추측 몇 가지 조사 후, 나는 구글 폐쇄 컴파일러를 실행 네일 건을 사용하여이 https://www.npmjs.com/package/closure-gun을 찾았지만, 난 내 현재 설정과이 통합 할 수있는 방법 확실하지 않다 모든 포인터를 부탁드립니다 :)

답변