Gulp 模板缓存任务不一致不工作
Gulp template cache task inconsistently not working
我正在执行一系列 gulp 任务,但出于某种原因,模板缓存有时只会添加到我的最终 js 文件中。
我的控制台看起来不错 - 因为没有任务完成得太晚或太早:
[10:44:50] Starting 'styles'...
[10:44:50] Finished 'styles' after 7.66 ms
[10:44:50] Starting 'scripts'...
[10:44:50] Starting 'template-cache'...
[10:44:50] Finished 'template-cache' after 7.83 ms
[10:44:50] Finished 'scripts' after 58 ms
[10:44:50] Starting 'pack'...
[10:44:50] Starting 'jam'...
[10:44:50] Finished 'pack' after 681 ms
[10:44:50] Finished 'jam' after 614 ms
[10:44:50] Starting 'default'...
[10:44:50] Finished 'default' after 4.56 ╬╝s
这是我的模板缓存函数
function buildTemplateCache(module) {
return {
src: dir.src + '/' + module + '/**/*.html',
dest: dir.tmp + '/' + module,
options: {
module: 'balances.' + module,
moduleSystem: 'Browserify',
root: dir.mapping + '/' + module,
templateHeader: "primeTemplateCache; primeTemplateCache.inject = ['$templateCache']; function primeTemplateCache($templateCache) {",
templateFooter: '}'
}
};
}
这是初始调用:
gulp.task('default', ['styles', 'pack', 'jam']);
这里是相关的 gulp 任务:
gulp.task('pack', ['scripts', 'template-cache'], function (callback) {
webpack(config.webpack.packs, callback);
});
gulp.task('jam', ['scripts', 'template-cache'], function (callback) {
var jams = config.webpack.packs.map(minifyPack);
webpack(jams, callback);
});
gulp.task('template-cache', function () {
return Q.all(config.templateCache.caches.map(function (cacheConfig) {
return gulp
.src(cacheConfig.src)
.pipe(templateCache(cacheConfig.options))
.pipe(gulp.dest(cacheConfig.dest));
}));
});
有没有人运行遇到过这样的问题?似乎有时只添加模板而不添加其他模板。 100% 的时间都符合预期。
起初我以为这是缓存或同步问题,但在查看日志并尝试重现几天后,我找不到始终如一的方法。
我相信gulp.src
returns流,而不是承诺。因此,Q.all
将始终在下一个 tick 期间解决。我认为你想要的不是 Q.all
,而是 event-stream or combiner.obj
from stream-combiner2.
中的 es.merge
var es = require('event-stream');
gulp.task('template-cache', function () {
return es.merge(config.templateCache.caches.map(function (cacheConfig) {
return gulp
.src(cacheConfig.src)
.pipe(templateCache(cacheConfig.options))
.pipe(gulp.dest(cacheConfig.dest));
}));
});
我正在执行一系列 gulp 任务,但出于某种原因,模板缓存有时只会添加到我的最终 js 文件中。
我的控制台看起来不错 - 因为没有任务完成得太晚或太早:
[10:44:50] Starting 'styles'...
[10:44:50] Finished 'styles' after 7.66 ms
[10:44:50] Starting 'scripts'...
[10:44:50] Starting 'template-cache'...
[10:44:50] Finished 'template-cache' after 7.83 ms
[10:44:50] Finished 'scripts' after 58 ms
[10:44:50] Starting 'pack'...
[10:44:50] Starting 'jam'...
[10:44:50] Finished 'pack' after 681 ms
[10:44:50] Finished 'jam' after 614 ms
[10:44:50] Starting 'default'...
[10:44:50] Finished 'default' after 4.56 ╬╝s
这是我的模板缓存函数
function buildTemplateCache(module) {
return {
src: dir.src + '/' + module + '/**/*.html',
dest: dir.tmp + '/' + module,
options: {
module: 'balances.' + module,
moduleSystem: 'Browserify',
root: dir.mapping + '/' + module,
templateHeader: "primeTemplateCache; primeTemplateCache.inject = ['$templateCache']; function primeTemplateCache($templateCache) {",
templateFooter: '}'
}
};
}
这是初始调用:
gulp.task('default', ['styles', 'pack', 'jam']);
这里是相关的 gulp 任务:
gulp.task('pack', ['scripts', 'template-cache'], function (callback) {
webpack(config.webpack.packs, callback);
});
gulp.task('jam', ['scripts', 'template-cache'], function (callback) {
var jams = config.webpack.packs.map(minifyPack);
webpack(jams, callback);
});
gulp.task('template-cache', function () {
return Q.all(config.templateCache.caches.map(function (cacheConfig) {
return gulp
.src(cacheConfig.src)
.pipe(templateCache(cacheConfig.options))
.pipe(gulp.dest(cacheConfig.dest));
}));
});
有没有人运行遇到过这样的问题?似乎有时只添加模板而不添加其他模板。 100% 的时间都符合预期。
起初我以为这是缓存或同步问题,但在查看日志并尝试重现几天后,我找不到始终如一的方法。
我相信gulp.src
returns流,而不是承诺。因此,Q.all
将始终在下一个 tick 期间解决。我认为你想要的不是 Q.all
,而是 event-stream or combiner.obj
from stream-combiner2.
es.merge
var es = require('event-stream');
gulp.task('template-cache', function () {
return es.merge(config.templateCache.caches.map(function (cacheConfig) {
return gulp
.src(cacheConfig.src)
.pipe(templateCache(cacheConfig.options))
.pipe(gulp.dest(cacheConfig.dest));
}));
});