首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用google闭包将js文件编译成单个文件,而不是单个文件。

使用google闭包将js文件编译成单个文件,而不是单个文件。
EN

Stack Overflow用户
提问于 2016-12-03 02:27:14
回答 1查看 1.5K关注 0票数 1

我正在使用google-closure-compiler和gulp来缩小我的angularjs文件。

我在app/js文件夹中有3js文件。他们是controller.js, app.js, services.js

这是我的吞咽文件代码:

代码语言:javascript
复制
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'));
});

代码所做的是将3 js文件编译成一个文件output.min.js

我想要的是将3 js文件编译成3个单独的js文件controller.min.js, app.min.js, services.min.js

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-03 08:31:05

据我所见,没有办法避免由Google闭包编译器合并您的文件。即使省略了js_output_file选项,它也只是默认为输出文件名compiled.js。这意味着您必须为每个文件调用闭包编译器。

gulp-flatmap插件可以让你很容易地做到这一点。您只需确定每个输入文件的js_output_file值(基本上将.js替换为每个文件名中的.min.js ):

代码语言:javascript
复制
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'));
});
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40943636

复制
相关文章

相似问题

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