这是一个组合任务,我不知道如何用任务依赖项替换它.
...
gulp.task('watch', function () {
var server = function(){
gulp.run('jasmine');
gulp.run('embed');
};
var client = function(){
gulp.run('scripts');
gulp.run('styles');
gulp.run('copy');
gulp.run('lint');
};
gulp.watch('app/*.js', server);
gulp.watch('spec/nodejs/*.js', server);
gulp.watch('app/backend/*.js', server);
gulp.watch('src/admin/*.js', client);
gulp.watch('src/admin/*.css', client);
gulp.watch('src/geojson-index.json', function(){
gulp.run('copygeojson');
});
});
Run Code Online (Sandbox Code Playgroud)
相应的更改日志 https://github.com/gulpjs/gulp/blob/master/CHANGELOG.md#35 [弃用gulp.run]
Pav*_*eev 85
或者你可以这样做:
gulp.start('task1', 'task2');
Run Code Online (Sandbox Code Playgroud)
Con*_*tra 81
gulp.task('watch', function () {
var server = ['jasmine', 'embed'];
var client = ['scripts', 'styles', 'copy', 'lint'];
gulp.watch('app/*.js', server);
gulp.watch('spec/nodejs/*.js', server);
gulp.watch('app/backend/*.js', server);
gulp.watch('src/admin/*.js', client);
gulp.watch('src/admin/*.css', client);
gulp.watch('src/geojson-index.json', ['copygeojson']);
});
Run Code Online (Sandbox Code Playgroud)
您不再需要传递函数(尽管您仍然可以)来运行任务.您可以为监视提供一系列任务名称,它将为您执行此操作.
dma*_*man 25
来源:https://github.com/gulpjs/gulp/issues/755
gulp.start()从来没有打算成为一个公共api也不会被使用.正如上面评论中所述,任务管理正在下一个版本中被替换....所以gulp.start()将会破坏.
gulp设计的真正目的是制作常规的Javascript函数,并且只进行调用它们的任务.
例:
function getJsFiles() {
var sourcePaths = [
'./app/scripts/**/*.js',
'!./app/scripts/**/*.spec.js',
'!./app/scripts/app.js'
];
var sources = gulp.src(sourcePaths, { read: false }).pipe(angularFilesort());
return gulp.src('./app/index.html')
.pipe(injector(sources, { ignorePath: 'app', addRootSlash: false }))
.pipe(gulp.dest('./app'));
}
Run Code Online (Sandbox Code Playgroud)
gulp.task('js', function () {
jsStream = getJsFiles();
});
Run Code Online (Sandbox Code Playgroud)
Cer*_*rad 12
请原谅我复活旧问题.接受的答案没有解决在设置手表之前运行任务的问题.下一个答案使用gulp.start即将消失.第三个答案指出应该使用常规函数,但示例似乎很奇怪.我做了一些搜索,但没有找到一个简单的例子.
这是我的解决方案.我们的想法是定义常规的js函数,然后将它们注册为任务.然后,如果需要或从手表中直接调用这些功能.
var
gulp = require('gulp'),
concat = require('gulp-concat'),
markdown = require('gulp-showdown')
;
var scriptFiles = [ 'ang/app.js' ];
var markdownFiles = [ 'content/articles/*.md'];
var watchTask = function()
{
buildTask();
gulp.watch(scriptFiles, ['scripts' ]);
gulp.watch(markdownFiles,['markdown']);
};
gulp.task('watch',watchTask);
var buildTask = function()
{
scriptsTask();
markdownTask();
};
gulp.task('build',buildTask);
var markdownTask = function()
{
gulp.src(markdownFiles)
.pipe(markdown())
.pipe(gulp.dest('web/articles'));
};
gulp.task('markdown',markdownTask);
var scriptsTask = function()
{
gulp.src(scriptFiles)
.pipe(concat('app.js'))
.pipe(gulp.dest('web/js'));
gulp.src(
[
'bower_components/angular/angular.min.js',
'bower_components/angular-route/angular-route.min.js'
])
.pipe(concat('vendor.js'))
.pipe(gulp.dest('web/js'));
gulp.src(
[
'bower_components/angular/angular.min.js.map',
'bower_components/angular-route/angular-route.min.js.map'
])
.pipe(gulp.dest('web/js'));
};
gulp.task('scripts', scriptsTask);
Run Code Online (Sandbox Code Playgroud)
我是新来的.如果我忽略了一些显而易见的事情,请告诉我.
正如@dman提到的那样,gulp.start将在下一个版本中被丢弃.也可以在这个gulp问题中看到.
在@Pavel Evstigneev答案的评论中,@ joemaller提到我们可以在这种情况下使用run-sequence.
但请注意,run-sequence的作者说:
这是一个临时解决方案,直到gulp 4.0发布,它支持串行或并行定义任务依赖.
请注意,此解决方案是一个黑客攻击,并可能会停止使用未来的更新gulp.
所以,在gulp 4.0之前,我们可以使用run-sequence,在4.0之后,我们可以使用gulp.
小智 5
口香糖4
gulp.parallel('taskName1', 'taskName2')()
gulp.series('taskName1', 'taskName2')()
Run Code Online (Sandbox Code Playgroud)
我喜欢gulp4!