我正在自动化一个新的角度项目,我正在使用 gulp-inject 来获取我的所有项目脚本依赖项并按顺序注入它们。源脚本是使用 streamqueue 合并许多不同的流,我有两个任务使用来自streamqueue的相同结果来注入脚本路径,一个在我的index.html文件中,另一个在我的业力中。 conf.js文件。为了避免重复代码和可能的错误,我把它移到了像这样的函数
function getAppDependencies() {
'use strict';
return streamqueue({ objectMode: true },
gulp.src('./wwww/js/*.js', { read: false }),
gulp.src(paths.app + '/**/*.module.js').pipe(filesort()),
gulp.src([paths.app + '/**/*.js', '!' + paths.app + '/**/*.module.js', '!' + paths.app + '/**/*.routes.js'], { read: false }),
gulp.src([paths.app + '/**/*.routes.js'], { read: false }),
gulp.src('./www/mocks/*.js', { read: false })
);
}
这两项任务看起来非常相似。这是业力的任务
gulp.task('inject:karma', function () {
'use strict';
var deps = getAppDependencies(),
tranfFn = function (filepath, file, i, length) {
return ' "./' + filepath + '"' + (i + 1 < length ? ',' : '');
};
gulp.src('./tests/karma.conf.js')
.pipe(inject(deps), {
starttag: 'files: [',
endtag: ']',
transform: tranfFn,
addRootSlash: false
})
.pipe(gulp.dest('./tests/'));
});
这是index.html文件的任务
gulp.task("inject", function () {
"use strict";
var deps = getAppDependencies();
gulp.src('./www/index.html')
.pipe(inject(deps, {
starttag: '<!-- inject:scripts -->',
addRootSlash: false,
relative: true
}))
.pipe(gulp.dest('./www'));
});
他们基本上看起来相同,但业力任务不起作用。 karma.conf.js的文件:[]设置未填充文件路径。我试图删除函数getAppDependencies并直接包含streamqueue块并且它工作。
gulp.src('./tests/karma.conf.js')
.pipe(inject(streamqueue({ objectMode: true }
// stream arguments ....
我还注意到注入任务在控制台中输出“Starting inject ...”,但它们从不输出“Finished inject ...”。有谁知道我在这里做错了什么。提前谢谢。