我正在使用Gulp运行以下构建任务。测试是使用Karma / Jasmine
完成的Enum
删除旧的缩小的.js文件prod/scripts
这是我的gulpfile:
prod/scripts
我遇到的问题是,除非我从测试任务中调用const { series } = require('gulp');
var del = require('del');
var gulp = require('gulp');
var karma = require('karma').Server;
var minify = require('gulp-minify');
function clean() {
return del(['prod/scripts/*']);
};
function minifyjs() {
return gulp.src('scripts/*.js')
.pipe(minify(require('./minify.conf.js')))
.pipe(gulp.dest('./prod/scripts'));
};
function test(done) {
new karma({
configFile: __dirname + '/test/karma.conf.js',
singleRun: true
}, function(err) {
done();
//process.exit(err);
}).start();
};
function test_min(done) {
new karma({
configFile: __dirname + '/test/karma.min.conf.js',
singleRun: true
}, function(err) {
done();
//process.exit(err); <--- Required for Gulp to return to the command line after finishing tasks
}).start();
};
exports.default = series(clean, test, minifyjs, test_min);
,否则process.exit()
命令即使成功运行所有任务也不会返回到命令提示符。
gulp
如果我将C:\users\brubin\documents\ci\web-shop\test> gulp
[16:47:26] Working directory changed to C:\users\brubin\documents\ci\web-shop
[16:47:27] Using gulpfile C:\users\brubin\documents\ci\web-shop\gulpfile.js
[16:47:27] Starting 'default'...
[16:47:27] Starting 'test'...
04 01 2020 16:47:27.994:INFO [karma-server]: Karma v4.4.1 server started at http://0.0.0.0:9876/
04 01 2020 16:47:27.996:INFO [launcher]: Launching browsers Chrome with concurrency unlimited
04 01 2020 16:47:28.000:INFO [launcher]: Starting browser Chrome
04 01 2020 16:47:30.095:INFO [Chrome 79.0.3945 (Windows 10.0.0)]: Connected on socket T93nQsJYw4cCcVJXAAAA with id 11147347
Chrome 79.0.3945 (Windows 10.0.0): Executed 5 of 5 SUCCESS (0.036 secs / 0.019 secs)
TOTAL: 5 SUCCESS
[16:47:30] Finished 'test' after 2.82 s
[16:47:30] Starting 'clean'...
[16:47:30] Finished 'clean' after 8.73 ms
[16:47:30] Starting 'minifyjs'...
[16:47:30] Finished 'minifyjs' after 65 ms
[16:47:30] Starting 'test_min'...
04 01 2020 16:47:30.528:INFO [karma-server]: Karma v4.4.1 server started at http://0.0.0.0:9876/
04 01 2020 16:47:30.530:INFO [launcher]: Launching browsers Chrome with concurrency unlimited
04 01 2020 16:47:30.532:INFO [launcher]: Starting browser Chrome
04 01 2020 16:47:32.682:INFO [Chrome 79.0.3945 (Windows 10.0.0)]: Connected on socket acGt_AMTBp5T7oVZAAAB with id 89875003
Chrome 79.0.3945 (Windows 10.0.0): Executed 5 of 5 SUCCESS (0.025 secs / 0.013 secs)
TOTAL: 5 SUCCESS
[16:47:32] Finished 'test_min' after 2.44 s
[16:47:32] Finished 'default' after 5.34
##### At this point, gulp should return to the command prompt, but it never does. #####
添加到测试任务中,那么Gulp 将在任务完成后返回命令提示符。但是,我必须仅将process.exit()
添加到要运行的最后一个任务。如果我将process.exit()
添加到第一个任务(process.exit()
),则在该任务完成后出现此错误
test
有没有一种方法可以解决此问题,并让Gulp返回命令提示符而无需调用[16:54:37] The following tasks did not complete: default, clean
[16:54:37] Did you forget to signal async completion?
?似乎没有必要调用process.exit()
,特别是因为我必须确保仅在最终测试任务上调用它。