用循环运行Gulp任务 [英] Run Gulp tasks with loop

查看:116
本文介绍了用循环运行Gulp任务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的Gulp任务有问题。我使用一个任务来创建多个带有大嘴胡子的html文件,以便在最后有两个文件(index_de.html和index_en.html)。我有一个包含字符串的.json文件。它一切正常。但是我总是最终得到两个文件都是de或en,而不是每个语言一个文件。我已经尝试了使用循环[gulp] 创建任务,但是这并不是' t工作。



编辑:澄清:两个文件包含相同的内容。总是。似乎随机会使用什么语言,但它总是相同的。



我的Gulp任务如下所示:



< pre $ gulp.task('mustache',function(){
console.log('Found'+ Object.keys(strings).length +'languages。');
for(var l in strings){
var lang = strings [l];
(function(lang,l){
gulp.src(buildpath +'/ index.html' )
.pipe(mustache(lang))
.pipe('index_'+ l +'。html'))
.pipe({(
'remove- ('''''''')'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$'$' /'));
})(lang,l);
}
});


解决方案

我想这里的一个选项是合并一系列 gulp.src()流并返回合并的流。这里是你的代码被修改为使用 merge-stream npm包( https://www.npmjs.com/package/merge-stream )。

  var mergeStream = require('merge-stream'); 
$ b gulp.task('mustache',function(){
console.log('Found'+ Object.keys(strings).length +'languages。');
var tasks = [];
for(var l in strings){
var lang = strings [l];
tasks.push(
gulp.src(buildpath +' /index.html')
.pipe(mustache(lang))
.pipe('index_'+ l +'.html'))
.pipe b $ b'remove-intertag-spaces':true,
'compress-js':true,
'compress-css':true
}))
.pipe( gulp.dest(destpath +'/'))
);
}
返回mergeStream(tasks);
});


I have a problem with my Gulp tasks. I use one task to create multiple html files with gulp-mustache, so that I have two files (index_de.html and index_en.html) at the end. I have a .json file, that contains the strings. It all works fine. But I always end up with either both files being de or en, instead of one file per language. I already tried creating tasks using a loop [gulp], but that doesn't work.

Edit: to clarify: Both files contain the same content. Always. Seems randomly what language it will be, but it's always the same.

My Gulp tasks looks like the following:

gulp.task('mustache', function () {
  console.log('Found '+Object.keys(strings).length+' languages.');
  for (var l in strings) {
    var lang = strings[l];
    (function(lang, l) {
    gulp.src(buildpath+'/index.html')
      .pipe(mustache(lang))
      .pipe(rename('index_'+l+'.html'))
      .pipe(compressor({
        'remove-intertag-spaces': true,
        'compress-js': true,
        'compress-css': true
      }))
      .pipe(gulp.dest(destpath+'/'));
    })(lang, l);
  }
});

解决方案

I think an option here is to merge a series of gulp.src() streams and return the merged streams. Here is your code modified to use the merge-stream npm package (https://www.npmjs.com/package/merge-stream).

var mergeStream = require('merge-stream');

gulp.task('mustache', function () {
    console.log('Found ' + Object.keys(strings).length + ' languages.');
    var tasks = [];
    for (var l in strings) {
        var lang = strings[l];
        tasks.push(
            gulp.src(buildpath + '/index.html')
                .pipe(mustache(lang))
                .pipe(rename('index_' + l + '.html'))
                .pipe(compressor({
                    'remove-intertag-spaces': true,
                    'compress-js': true,
                    'compress-css': true
                }))
                .pipe(gulp.dest(destpath + '/'))
        );
    }
    return mergeStream(tasks);
});

这篇关于用循环运行Gulp任务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆