首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用gulp减少google关闭运行时

使用gulp减少google关闭运行时
EN

Stack Overflow用户
提问于 2017-10-26 15:12:26
回答 1查看 214关注 0票数 0

我试图在开发过程中为plovr找到一个替代方案,因为plovr有点落后,每次升级google关闭都会变得麻烦。

所以我考虑用口服液。我使用google建立了一个gulp服务器,在回退时,它会触发google闭包编译,然后等待生成文件,然后将其提供给客户端。我面临的问题是编译时间远大于plovr ~40 vs ~20。对于前端开发人员来说,这将需要很长时间等待页面在一个小更改后加载。可以做些什么来优化闭包编译器的编译时间。这是我的gulpfile.js给你一个关于我的设置的想法。

代码语言:javascript
复制
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使用钉枪来运行google闭包编译器,但是我不知道如何将它与我当前的设置集成起来,任何指针都会被感激:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-17 15:02:12

我找到了答案,并将解决方案添加到google-闭包编译器npm回购https://github.com/google/closure-compiler-npm/pull/77/files的自述文件中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46957958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档