如何运行两个elixir任务按顺序?
How to run two elixir tasks in sequence?
看看这段代码:
var elixir = require('laravel-elixir')
gulp = require('gulp'),
fs = require('fs');
gulp.task('t1', function() {
return gulp.src('1/1.js')
.pipe(gulp.dest('2'));
});
gulp.task('t2', function() {
// setTimeout(function() {
console.log(fs.existsSync('2/1.js'));
// }, 100);
return gulp.src('2/1.js')
.pipe(gulp.dest('3'));
});
elixir(function(mix) {
mix.task('t1').task('t2');
});
当我取消注释 setTimeout
时,console.log
开始输出 true
。这应该意味着,第二个任务在第一个任务尚未完成时开始。有没有办法让他们运行一个接一个?
我真正想做的是 browserify
我的 js 文件,向它们附加一些其他文件(自定义任务)和 version
结果。但是版本控制失败,因为文件还不存在。
P.S。在运行宁gulp
之前做mkdir 1 && touch 1/1.js
。并在每个 运行.
之前执行 rm {2,3}/1.js
The issue 这里是 laravel-elixir
将这类任务包装在动态生成的任务中。包装器按顺序执行。但他们似乎不会等到子任务完成。
所以,我能想到的最好的办法是:
var elixir = require('laravel-elixir');
var gulp = require('gulp');
var fs = require('fs');
elixir.extend('inlineTask', function(func, watcher) {
var task = new elixir.Task(func.name, func);
if (watcher) {
task.watch(watcher);
}
});
elixir(function(mix) {
mix.inlineTask(function t1() {
console.log('1 -> 2');
return gulp.src('1/1.js')
.pipe(gulp.dest('2'));
}, '1/**/*.js').inlineTask(function t2() {
console.log('2 -> 3');
console.log(fs.existsSync('2/1.js'));
return gulp.src('2/1.js')
.pipe(gulp.dest('3'));
}, '2/**/*.js');
});
看看这段代码:
var elixir = require('laravel-elixir')
gulp = require('gulp'),
fs = require('fs');
gulp.task('t1', function() {
return gulp.src('1/1.js')
.pipe(gulp.dest('2'));
});
gulp.task('t2', function() {
// setTimeout(function() {
console.log(fs.existsSync('2/1.js'));
// }, 100);
return gulp.src('2/1.js')
.pipe(gulp.dest('3'));
});
elixir(function(mix) {
mix.task('t1').task('t2');
});
当我取消注释 setTimeout
时,console.log
开始输出 true
。这应该意味着,第二个任务在第一个任务尚未完成时开始。有没有办法让他们运行一个接一个?
我真正想做的是 browserify
我的 js 文件,向它们附加一些其他文件(自定义任务)和 version
结果。但是版本控制失败,因为文件还不存在。
P.S。在运行宁gulp
之前做mkdir 1 && touch 1/1.js
。并在每个 运行.
rm {2,3}/1.js
The issue 这里是 laravel-elixir
将这类任务包装在动态生成的任务中。包装器按顺序执行。但他们似乎不会等到子任务完成。
所以,我能想到的最好的办法是:
var elixir = require('laravel-elixir');
var gulp = require('gulp');
var fs = require('fs');
elixir.extend('inlineTask', function(func, watcher) {
var task = new elixir.Task(func.name, func);
if (watcher) {
task.watch(watcher);
}
});
elixir(function(mix) {
mix.inlineTask(function t1() {
console.log('1 -> 2');
return gulp.src('1/1.js')
.pipe(gulp.dest('2'));
}, '1/**/*.js').inlineTask(function t2() {
console.log('2 -> 3');
console.log(fs.existsSync('2/1.js'));
return gulp.src('2/1.js')
.pipe(gulp.dest('3'));
}, '2/**/*.js');
});