我正在尝试对旧的gulpfile for launching processes进行现代化改造,但是遇到了问题。当我运行gulp时:
PS C:\Users\me\Desktop\_REPOS\gknode> gulp
[18:42:50] Using gulpfile ~\Desktop\_REPOS\gknode\gulpfile.js
[18:42:50] Task never defined: default
gulpfile.js
gulp=require('gulp')
//Because gulp.task(name, deps, func) was replaced by gulp.task(name, gulp.{series|parallel}(deps, func))
gulp.task('node-server-start', gulp.series(
function (cb) {spawn('node', ['nodeapi/nodeapi.js'], {stdio: 'inherit'}) }
)
);
gulp.task('ng-serve', gulp.series(
function (cb) {spawn('ng', ['serve'], {stdio: 'inherit'}) }
)
);
gulp.task('start', gulp.parallel(['ng-serve', 'node-server-start'], function () {console.log('both servers launched on localhost:4200')}));
任务树:
PS C:\Users\me\Desktop\_REPOS\gknode> gulp --tasks
[18:43:00] Tasks for ~\Desktop\_REPOS\gknode\gulpfile.js
[18:43:00] ├─┬ node-server-start
[18:43:00] │ └─┬ <series>
[18:43:00] │ └── <anonymous>
[18:43:00] ├─┬ ng-serve
[18:43:00] │ └─┬ <series>
[18:43:00] │ └── <anonymous>
[18:43:00] └─┬ start
[18:43:00] └─┬ <parallel>
[18:43:00] ├─┬ ng-serve
[18:43:00] │ └─┬ <series>
[18:43:00] │ └── <anonymous>
[18:43:00] ├─┬ node-server-start
[18:43:00] │ └─┬ <series>
[18:43:00] │ └── <anonymous>
[18:43:00] └── <anonymous>
我的问题是启动任务结束时的匿名任务吗?
答案 0 :(得分:1)
为了仅运行gulp
,您需要指定一个名为default
的任务。其他一些要点:
gulp.series
中包装单个任务功能。gulp.parallel
需要一个任务功能(名称或匿名功能)列表,而不是数组。为了使代码正常工作,最后一点可能是不必要的,但是我将其包含在以下内容中,可以完成工作:
const gulp = require('gulp');
const { spawn } = require('child_process');
gulp.task('node-server-start', function(cb) {
const server = spawn('node', ['nodeapi/nodeapi.js'], { stdio: 'inherit' });
server.on('close', () => cb());
});
gulp.task('ng-serve', function(cb) {
const server = spawn(
/^win/.test(process.platform) ? 'ng.cmd' : 'ng',
['serve'],
{ stdio: 'inherit' }
);
server.on('close', () => cb());
});
gulp.task(
'start',
gulp.parallel('ng-serve', 'node-server-start', function(cb) {
console.log('both servers launched on localhost:4200');
cb();
})
);
gulp.task('default', gulp.series('start'));
更新:
使用与平台无关的解决方案进行了更新。