Gulp Streams запускает конечные события, когда параллельно
Вот интересный gulpfile:
gulp.task 'index', ['coffee:build', 'templates:build', 'bower', 'sass:build', 'frontend:assets'], ->
bowerCss = gulp.src ["bower_components/**/*.css"], cwd: 'frontend'
appJs = gulp.src ["scripts/**/*.js"], cwd: 'frontend'
appCss = gulp.src ["**/*.css", '!bower_components/**'], cwd: 'frontend'
return gulp.src 'web/index.html'
.pipe plugins.inject appJs.pipe(plugins.angularFilesort())
.pipe plugins.inject appCss
.pipe plugins.debug()
.pipe plugins.inject bowerCss, {name: 'bower'}
.pipe plugins.debug()
.pipe gulp.dest 'frontend'
Вызов его заканчивается тем, что некоторые имена файлов вводятся в мой index.html. Работает нормально.
Когда я называю это как часть большей партии:
gulp.task 'develop', [
'backend:coffee'
'backend:copy'
'backend:serve'
'frontend:serve' # index is required by frontend:serve
'coffee:watch'
'sass:watch'
'templates:watch']
Это просто вроде шипит. Вместо того, чтобы получать разумные результаты от gulp-inject и gulp-debug, я получаю следующее от gulp-debug:
[23:06:59] Starting 'index'...
[23:06:59] Starting 'templates:watch'...
[23:06:59] gulp-debug: end event fired (2014-08-03 06:06:59 UTC)
[23:06:59] gulp-debug: end event fired (2014-08-03 06:06:59 UTC)
[23:06:59] Finished 'index' after 188 ms
Стоит отметить, что я могу сделать глоток интерфейс: служить, и он отлично работает. Это только ошибки, когда я запускаю свою команду "просто запустить все". Я полагаю, что я скучаю по некоторым ошибкам с распараллеливанием или состоянием гонки, но странно, что конечное событие просто начинается волей-неволей.
Прямо сейчас с этой настройкой я могу сделать gulp frontend: serve, gulp backend: служить на двух разных терминалах, и это нормально. Но если я сделаю gulp frontend: serve backend: serve или gulp debug (что фактически одно и то же, это не перестроит мой индексный файл.
Есть указатели? Благодарю.
1 ответ
Ага, понял. На самом деле это был gulp-nodemon, который устанавливал рабочий каталог для всего процесса, когда я настраивал его с помощью:
gulp.task 'backend:serve', ['backend:build', 'backend:copy'], ->
plugins.nodemon
cwd: config.paths.backendBuild
script: "server.js"
я должен был сделать
gulp.task 'backend:serve', ['backend:build', 'backend:copy'], ->
plugins.nodemon
watch: config.paths.backendBuild
script: "backend/server.js"
вместо. Я не уверен, что установка process.cwd() в nodemon - отличная идея, но имеет смысл, учитывая, что такое поведение, вероятно, исходит от nodemon, который, вероятно, не ожидает, что он будет работать как часть более крупного проекта.