吞咽不执行压缩任务
问题描述:
我是一个吞咽世界的新手,因此我仍然在小心翼翼地解决这个问题。吞咽不执行压缩任务
问题:正在跳过zip
任务,即使在“默认”任务中定义。
我在哪里/我在想什么?
更多细节
的gulp zip
运行正常时,在命令行指定的(不存在例如;语法错误,并且如预期正在产生的输出):
$ gulp zip
[16:49:41] Using gulpfile ~/Work/........../gulpfile.js
[16:49:41] Starting 'zip'...
[16:49:41] Finished 'zip' after 11 ms
$
然而,当运行gulp
(没有任何附加参数时,表示选择default
):
$ gulp
[16:49:34] Using gulpfile ~/Work/........../gulpfile.js
[16:49:34] Starting 'clean'...
[16:49:34] Finished 'clean' after 35 ms
...
...
[16:49:36] Finished 'minify-css' after 750 ms
[16:49:36] Starting 'build'...
[16:49:36] Finished 'build' after 2.1 μs
$
的zip
任务被跳过
检查 '默认' 的任务定义(!?):
gulp.task('default', ['clean'], function() {
gulp.start('build');
});
而且'建设”的任务定义为:
gulp.task('build', ['html', 'images', 'fonts', 'misc', 'i18n', 'swagger', 'minify-js', 'minify-css', 'zip']);
看的zip
任务在数组末尾列出。 最后,zip
任务被定义为:
gulp.task('zip', function() {
var packageName = 'whatever';
var dateString = now.getFullYear()+('0'+(parseInt(now.getMonth())+1)).substr(-2)+('0'+now.getDate()).substr(-2);
var timeString = ('0'+now.getHours()).substr(-2)+('0'+now.getMinutes()).substr(-2)+('0'+now.getSeconds()).substr(-2);
gulp.src('target/dist/**')
.pipe(zip(packageName+'-'+dateString+'.'+timeString+'.zip'))
.pipe(gulp.dest('target'));
return;
});
任何帮助[指向的方向],将不胜感激。
答
还有一个教训!
Gulp,默认情况下,runs as much as possible the tasks in asynchronous fashion - 除非您已采取适当措施强制它以顺序方式运行任务。
说了这么一句,zip
的任务确实被执行了 - 但它的执行方式比我预期的要早 - 因此我[不正确]认为它完全没有运行。
因此,我不是将'zip'任务作为“构建”任务所依赖的一个任务添加,而是使'zip'任务依赖于'构建'任务,并具有'默认'任务运行“拉链”的任务:
gulp.task('zip', function() {
var packageName = 'whatever';
var dateString = now.getFullYear()+...
var timeString = ('0'+now.getHours()).substr(-2)+...
gulp.src('target/dist/**')
.pipe(zip(packageName+'-'+dateString+'.'+timeString+'.zip'))
.pipe(gulp.dest('target'));
return;
});
gulp.task('build', ['html', 'images', 'fonts', 'misc', 'i18n', 'swagger', 'minify-js', 'minify-css']);
gulp.task('default', ['clean'], function() {
//gulp.start('build');
gulp.start('zip');
});
这些变化之后,开始建立按预期方式工作:
$ gulp
[17:04:59] Using gulpfile ~/Work/ij-wksp/smiles-password-form-Q1_2017/gulpfile.js
[17:04:59] Starting 'clean'...
[17:04:59] Finished 'clean' after 45 ms
[17:04:59] Starting 'default'...
[17:04:59] Starting 'wiredep'...
[17:04:59] Starting 'injector:css'...
[17:04:59] Starting 'scripts'...
[17:05:00] Starting 'version'...
[17:05:00] Starting 'consolidate:jade:app'...
[17:05:00] Starting 'consolidate:jade:scripts'...
...
[17:05:01] Finished 'html' after 233 ms
[17:05:01] Starting 'build'...
[17:05:01] Finished 'build' after 3.71 μs
[17:05:01] Starting 'zip'...
[17:05:01] Finished 'zip' after 1.95 ms
$
你对所有的任务return语句? – Mark
@Mark大多数人都有。运行'return'的任务如下: gulp.task('images',function(){ return gulp.src('webapp/assets/images/**/*') .pipe(... ) .pipe(gulp.dest('webapp/dist/assets/images /')); }); 我已经尝试过相同的风格,但没有成功:除非明确指定,否则'zip'任务不会运行。 – Feng
您是否尝试在构建任务的开始处放置zip任务以查看它是否在那里运行,并且最后的任何内容都不会运行? – Mark