Ala*_* P. 4 javascript gulp run-sequence
我的Gulp文件中有3个必须按此顺序运行的任务:
clean(删除/dist文件夹中的所有内容)copy(将多个文件复制到/dist文件夹中)replace(替换文件/dist夹中某些文件中的一些字符串)我已经阅读了所有其他帖子,我尝试过"run-sequence",但由于"替换"任务最后没有运行,因此无法正常工作.我对使用"回调"感到困惑.单独运行任务工作正常.
var gulp = require('gulp');
var runSequence = require('run-sequence');
gulp.task('runEverything', function(callback) {
runSequence('clean',
'copy',
'replace',
callback);
});
gulp.task('clean', function () {
return del(
'dist/**/*'
);
});
gulp.task('copy', function() {
gulp.src('node_modules/bootstrap/dist/**/*')
.pipe(gulp.dest('dist/vendor'))
//...
return gulp.src(['index.html', '404.html', '.htaccess'])
.pipe(gulp.dest('dist/'));
});
gulp.task('replace', function(){
gulp.src(['dist/index.php', 'dist/info.php'])
.pipe(replace('fakedomain.com', 'realdomain.com'))
.pipe(gulp.dest('dist'));
return gulp.src(['dist/config.php'])
.pipe(replace('foo', 'bar'))
.pipe(gulp.dest('dist'));
});
Run Code Online (Sandbox Code Playgroud)
使用这3个任务的完整示例将不胜感激.谢谢.
Sve*_*ung 13
有关异步操作的任务的run-sequence文档如下:
确保它们返回流或承诺,或处理回调
您copy和replace任务都有多个流.你必须返回所有流,而不仅仅是最后一个流.如果你没有归还其他流,Gulp将不会知道任何其他流,因此不会等待他们完成.
由于您只能返回单个流,因此必须合并流[在此处插入Ghostbusters参考].这将为您提供一个可以从任务返回的合并流.
以下是使用该merge-stream包的方法:
var merge = require('merge-stream');
gulp.task('copy', function() {
var stream1 = gulp.src('node_modules/bootstrap/dist/**/*')
.pipe(gulp.dest('dist/vendor'))
//...
var stream2 = gulp.src(['index.html', '404.html', '.htaccess'])
.pipe(gulp.dest('dist/'));
return merge(stream1, stream2);
});
gulp.task('replace', function(){
var stream1 = gulp.src(['dist/index.php', 'dist/info.php'])
.pipe(replace('fakedomain.com', 'realdomain.com'))
.pipe(gulp.dest('dist'));
var stream2 = gulp.src(['dist/config.php'])
.pipe(replace('foo', 'bar'))
.pipe(gulp.dest('dist'));
return merge(stream1, stream2);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3180 次 |
| 最近记录: |