我正在使用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跑步?但我以为我已经指定了任务依赖项?
答案 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!
});