gulp не выходит после выполнения задач

При запуске gulp на сервере он не выходит после завершения задач. Вот что я получаю:

[01:16:02] Using gulpfile /test/test/gulpfile.js
[01:16:02] Starting 'clean'...
[01:16:02] Finished 'clean' after 11 ms
[01:16:02] Starting 'default'...
[01:16:02] Starting 'styles'...
[01:16:02] Starting 'scripts'...
[01:16:02] Starting 'watch'...
[01:16:02] Finished 'watch' after 20 ms
[01:16:02] Finished 'default' after 40 ms
[01:16:03] gulp-notify: [Gulp notification] Styles task complete
[01:16:03] Finished 'styles' after 338 ms
[01:16:03] gulp-notify: [Gulp notification] Scripts task complete
[01:16:03] Finished 'scripts' after 921 ms

Он застревает там и не возвращается в командную строку. А это мой gulpfile.js:

var gulp = require('gulp'),
autoprefixer = require('gulp-autoprefixer'),
uglify = require('gulp-uglify'),
imagemin = require('gulp-imagemin'),
rename = require('gulp-rename'),
concat = require('gulp-concat'),
notify = require('gulp-notify'),
cache = require('gulp-cache'),
livereload = require('gulp-livereload'),
minifyCss = require('gulp-minify-css'),
del = require('del');

 gulp.task('styles', function() {
  return gulp.src('./test/css/*.css') 
.pipe(autoprefixer('last 2 version'))
.pipe(concat('main.css')) 
.pipe(gulp.dest('./dist/styles')) 
.pipe(rename({ suffix: '.min' })) 
.pipe(minifyCss())
.pipe(gulp.dest('./dist/styles'))
.pipe(notify({ message: 'Styles task complete' }));
 });

  gulp.task('scripts', function() {
 return gulp.src('./test/js/*.js')
.pipe(concat('main.js'))
.pipe(gulp.dest('./dist/scripts'))
.pipe(rename({ suffix: '.min' }))
.pipe(uglify())
.pipe(gulp.dest('./dist/scripts'))
.pipe(notify({ message: 'Scripts task complete' }));
 });


gulp.task('clean', function() {
 return del(['dist/styles', './dist/scripts']);
 });


gulp.task('default', ['clean'], function() {
gulp.start('styles', 'scripts', 'watch');
 });

gulp.task('watch', function() {
gulp.watch('./test/css/*.css', ['styles']);
gulp.watch('./test/*.js', ['scripts']);

});

Единственный способ вернуться в командную строку — Ctrl+C.


person Besbes Riadh    schedule 27.12.2015    source источник


Ответы (1)


Если вы запускаете задачу gulp по умолчанию (просто запустив gulp в командной строке без аргументов), она не возвращается, потому что ваша задача по умолчанию вызывает вашу задачу watch.

gulp.task('watch', function() {
  gulp.watch('./test/css/*.css', ['styles']);
  gulp.watch('./test/*.js', ['scripts']);
}); 

Эта задача будет следить за указанными местоположениями в ожидании изменений, и когда изменения произойдут, запустит указанные задачи. Само по себе не возвращается. Вы должны вручную прервать его.

Если вы хотите создать другую задачу, которая просто создает ваш код, а затем завершает работу, вы можете использовать следующее:

gulp.task('build', ['clean', 'styles', 'scripts']);

А затем запустите его с помощью команды:

gulp build
person Brian S    schedule 27.12.2015
comment
дох! (фейспалм) мне. Так очевидно, но когда вы новичок в этом, все кажется большой проблемой. - person Kat Lim Ruiz; 24.05.2017