2016-07-09 2 views
0

Я новичок в Gulp, и я нашел пример Gulpfile.js, который я хотел использовать для загрузки на сервер моего экспресс-приложения всякий раз, когда изменения происходят либо в моем app.js файл или ./public. Вот код Gulpfile.js:Gulp Fix «gulp.run() устарел» для сервера Livereload

var gulp = require('gulp'), 
    spawn = require('child_process').spawn, 
    node; 

/** 
* $ gulp server 
* description: Launch the server. If there's a server already running, kill it. 
*/ 
gulp.task('server', function() { 
    if (node) node.kill() 

    node = spawn('node', ['app.js'], {stdio: 'inherit'}) 

    node.on('close', function (code) { 
    if (code === 8) { 
     gulp.log('Error detected, waiting for changes...'); 
    } 
    }); 
}) 

/** 
* $ gulp default 
* description: Start the development environment 
*/ 
gulp.task('default', function() { 
    gulp.run('server') 

    gulp.watch(['./app.js', './public/'], function() { 
    gulp.run('server') 
    }) 
}) 

// clean up if an error goes unhandled. 
process.on('exit', function() { 
    if (node) node.kill() 
}) 

В моем окне терминала я получаю следующее предупреждение:

gulp.run() has been deprecated. Use task dependencies or gulp.watch task triggering instead. 

Глоток работает, и это livereloading веб-приложение, как я хочу, чтобы это, но я «Я хотел бы исправить эту проблему для будущего доказательства моего процесса разработки, а также избавиться от этого раздражающего предупреждающего сообщения.

Спасибо за помощь!

ответ

1

Одним из вариантов было бы просто заменить все вхождения gulp.run() с gulp.start():

gulp.task('default', function() { 
    gulp.start('server'); 

    gulp.watch(['./app.js', './public/'], function() { 
    gulp.start('server'); 
    }); 
}); 

Однако вызов задачи явно с помощью gulp.start() не идиоматическое способ делать вещи в глотке (хотя иногда это необходимо).

предупреждающее сообщение появляется уже намекает на идиоматических способ решения этого:

зависимостей Использование задачи или gulp.watch задачу запускающего

  • Task dependencies позволяют выполнить задачу до другая задача. Это означает, что вы можете избавиться от первого gulp.run().
  • Task triggering в gulp.watch() позволяет запускать задачу при изменении файла. Это означает, что вы можете избавиться от второго gulp.run().

Поэтому ваша задача default заканчивает тем, как это:

gulp.task('default', ['server'], function() { 
    gulp.watch(['./app.js', './public/'], ['server']); 
}); 
+0

Я имел начальную ошибку, но это было из-за моей ошибки пользователя. Спасибо за помощь, я очень благодарен за это, ваше решение работает как шарм! – Corey

Смежные вопросы