我们的构建过程通过browserify运行我们的app.js
来处理require()
语句,然后将结果与其他一些脚本连接起来以创建scripts.js
。这是在两个单独的任务中完成的。
出于某种原因,第一个任务在之前结束它写入文件,导致app.js
被排除在构建之外。该任务是从this Gulp recipe复制的,只做了很少的修改。
以下是gulpfile的相关部分:
gulp.task('scripts', ['angular', 'views-js'], function () {
var bundledStream = through();
bundledStream
.pipe(source('app.js'))
.pipe(buffer())
.pipe(debug())
.pipe(uglify())
.on('error', gutil.log)
.pipe(sourcemaps.write(paths.target))
.pipe(gulp.dest(paths.target));
globby([paths.scripts], function(err, entries) {
if (err) {
bundledStream.emit('error', err);
return;
}
var b = browserify({
entries: entries,
debug: true,
});
b.bundle().pipe(bundledStream);
});
return bundledStream;
});
// Take all the scripts in the target directory and concatenate them to scripts.js.
gulp.task('scripts-all', ['scripts'], function () {
return gulp.src([path.join(paths.target, '*.js'), '!'+path.join(paths.target, 'scripts.js')])
.pipe(debug())
.pipe(concat('scripts.js'))
.pipe(header(banner, { pkg : pkg } ))
.pipe(gulp.dest(paths.target))
.pipe(livereload(reloadServer));
});
这是我们建立时发生的事情。请注意,在任务完成后,.debug()
管道将执行。这会导致文件错过.src()
中的scripts-all
扫描。
[16:57:46] Starting 'scripts'...
[16:57:46] Finished 'views' after 835 ms
[16:57:47] Finished 'scripts' after 749 ms
[16:57:47] Starting 'scripts-all'...
[16:57:47] gulp-debug: (2015-09-28 13:57:47 UTC)
File
cwd: ~/projects/ourProject
base: ~/projects/ourProject
path: ~/projects/ourProject/app.js
contents: (function e(t,n,r){function s(o,u){if(!n...
[16:57:48] gulp-debug: end event fired (2015-09-28 13:57:48 UTC)
我们做错了什么?
答案 0 :(得分:0)
我不知道globby
,但文档说它会返回一个承诺。我的猜测是,当你完成并从你传入的函数返回时,它将被解决。你可能需要返回承诺以防止任务完成。
如果这不能解决这个问题,我会尝试创建您自己的承诺并在'end'
的{{1}}事件处理程序中解析它,因为看起来您希望在{{1}时解析任务已经完成了它的工作。
bundledStream
我没有测试过你的特定任务,但这就是我昨天处理类似问题的方法。