javascript - for 循环内的 Gulp 流无法正常工作

标签 javascript node.js gulp gulp-concat

我有一个类似于以下内容的 gulp 任务。我正在尝试循环遍历并将字符串附加到页面,并连接相应的文件。

gulp.task('loop', function() {

    for(i =0; i < 10; i++) {

        gulp.src('./build/ross/templates/pages/_page_home.liquid')
            .pipe(plugins.insert.append('Loop ' + i))
            // real example has concat here
            .pipe(plugins.addSrc('./src/page/_page' + i + '.liquid'))
            .pipe(plugins.concat('_page_home.liquid'))
            .pipe(gulp.dest('./build/ross/templates/pages/'));

    }

});

预期输出类似于

Loop 1
// _page1.liquid contents
Loop 2
// _page2.liquid contents
Loop 3
// _page3.liquid contents
and so on...

实际输出看起来更像

// Original Page Contents here
Loop 9
// _page9.liquid contents

我在循环中对原始文件执行了 fs.readFile 并输出了数据,它仅输出原始页面内容,而不是连接的文件或我尝试附加的字符串。

我还在里面做了一个console.log(i),它显示了正确的数字1,2,3,4,5,6,7,8,9。我想知道这是否与 gulp.src() 有关

更新:有时输出内容实际上包含 _page#.liquid 内容的一部分。这有点不一致。

是否有更好的方法可以用 gulp 来做到这一点,或者我只是做错了什么?

最佳答案

在 freenode irc 上的 #gulpjs 人员的帮助下让它正常工作。

这使用了stream-to-promisebluebird

var s2p = require('stream-to-promise');
var Promise = require('bluebird');

gulp.task('loop2', function() {
    // don't forget your `var`s!
    var buildIt = function(i){
        return gulp.src('./build/ross/templates/pages/_page_home.liquid')
            .pipe(plugins.insert.append('Loop ' + i))
            .pipe(gulp.dest('./build/ross/templates/pages/'))
            .on('end', function(){ console.log(i + ' -- done')});
    }

    var indexes = [];

    for(var i = 0; i < 10; i++) {
        indexes.push(i);
    }

    // // sequence them
    indexes.reduce(function(p, index){
        return p.then(function(){
            return s2p(buildIt(index));
        });
    }, Promise.resolve());

});

关于javascript - for 循环内的 Gulp 流无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30061451/

相关文章:

javascript - Angularjs 工厂注入(inject)错误

javascript - 刚刚听说 Jupyter - 是否可以使用 Javascript 并将其保存在云端?

javascript - 如何将 GLSL 文件与 Gulp 捆绑在一起?

javascript - 使用node和gulp解析json文件

javascript - 将 HTML 数据属性中的数组转换为 Javascript 数组

javascript - 下拉菜单不垂直拉伸(stretch)

javascript - 在javascript中修改用户输入

node.js - 异步 : Combining two mongodb collection using Async. forEach

javascript - node.js 似乎在不使用时进入休眠模式

google-chrome - Gulp 生成的源 map 在 Chrome 中不起作用