gulp-concat没有在heroku上连接我的一个文件

时间:2016-02-25 02:10:36

标签: angularjs heroku gulp

我正在使用gulp为angular生成一个config.js文件,然后使用另一个gulp任务将所有.js文件连接在一起,gulp任务看起来像这样:

gulp.task('config', function() {
    var environment = process.env.NODE_ENV || 'development';
    gulp.src('public/config/' + environment + '.json')
        .pipe(ngConstant({
            name: 'app.config'
        }))
        .pipe(concat('public/js/config.js'))
        .pipe(gulp.dest('.'));
});

gulp.task('js', ['config'], function() {
    gulp.src('public/js/*.js')
        .pipe(concat('app.js'))
        .pipe(gulp.dest('public/dist'));
});


gulp.task('default', ['config', 'js']);

如果我在本地运行gulp,一切都有效。

但是当我使用这个安装后脚本推送到heroku时:

"postinstall": "bower install && gulp"

我可以看到gulp成功运行,添加一些调试后,我可以看到config.js文件甚至是正确创建的,但生成的app.js不包含config.js。任何人都可以建议这里可能有什么问题吗?

更新:我发现如果我gulp config && gulp js而不是gulp就可以了,这是因为gulp是async而js作业启动时没有创建config.js跑步?但我以为我已经指定了任务依赖项?

1 个答案:

答案 0 :(得分:0)

问题是:我没有从任务返回一个流,例如配置任务应该是这样的:

gulp.task('config', function() {
    var environment = process.env.NODE_ENV || 'development';
    var stream = gulp.src('public/config/' + environment + '.json')
        .pipe(ngConstant({
            name: 'app.config'
        }))
        .pipe(concat('public/js/config.js'))
        .pipe(gulp.dest('.'));
    return stream; // THIS IS IMPORTANT!
});