У меня есть файл gulp, который содержит различные задачи. Первая задача создает файл sass, и более поздняя задача предназначена для использования этого файла. Если я выполнил обе задачи явно (gulp sass
, убедитесь, что файл sass создан, а затем запущен gulp template-cache
), они работают нормально.Задача Gulp не выполняется, потому что предыдущая задача не создает необходимый файл
Однако при выполнении задачи gulp, объединяющей эти задачи, задача не выполняется из-за того, что файл template-cache
еще не создан, хотя задача sass
уже заявлена, что она завершена. Эти две глотка задача:
gulp.task('sass', function(){
sass(PATH.APP + '/**/*.scss', {sourcemap: true, style: 'expanded', compass: true})
.pipe(autoprefixer({browsers:['last 4 versions']}))
.pipe(sourcemaps.write())
.on('error', sass.logError)
.pipe(gulp.dest(PATH.APP))
.pipe(livereload());
});
gulp.task('template-cache', function() {
return gulp.src(PATH.APP + '/*/**/*.html')
.pipe(templateCache({ filename:'templates.js', module:'app' }))
.pipe(gulp.dest(PATH.DIST + '/scripts'));
});
Это является глоток задачи выполнения сборки:
gulp.task('default', sequence(
['sass', 'replace-config-local'],
'build',
'icons',
'revision'
,'uglify'
));
И это сборка задача:
gulp.task('build', sequence('clean', ['useref', 'template-cache'], 'concat', 'delete-templates'));
Сообщение об ошибке Я получаю:
gulp
[16:41:37] Using gulpfile ~/backoffice/gulpfile.js
[16:41:37] Starting 'default'...
[16:41:37] Starting 'sass'...
[16:41:37] Finished 'sass' after 46 ms
[16:41:37] Starting 'replace-config-local'...
[16:41:37] Finished 'replace-config-local' after 84 ms
[16:41:37] Starting 'build'...
[16:41:37] Starting 'clean'...
[16:41:37] Finished 'clean' after 14 ms
[16:41:37] Starting 'useref'...
[16:41:38] Starting 'template-cache'...
events.js:141
throw er; // Unhandled 'error' event
^
Error: Error: File not found with singular glob: /home/ubuntu/backoffice/app/styles/main.css
at DestroyableTransform.<anonymous> (/home/ubuntu/backoffice/node_modules/gulp-useref/index.js:65:28)
at emitOne (events.js:82:20)
at DestroyableTransform.emit (events.js:169:7)
at emitOne (events.js:77:13)
at DestroyableTransform.emit (events.js:169:7)
at Glob.<anonymous> (/home/ubuntu/backoffice/node_modules/gulp-useref/node_modules/vinyl-fs/node_modules/glob-stream/index.js:40:16)
at Glob.g (events.js:260:16)
at emitOne (events.js:77:13)
at Glob.emit (events.js:169:7)
at Glob._finish (/home/ubuntu/backoffice/node_modules/gulp-useref/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/glob.js:172:8)
at done (/home/ubuntu/backoffice/node_modules/gulp-useref/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/glob.js:159:12)
at Glob._processSimple2 (/home/ubuntu/backoffice/node_modules/gulp-useref/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/glob.js:652:12)
at /home/ubuntu/backoffice/node_modules/gulp-useref/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/glob.js:640:10
at Glob._stat2 (/home/ubuntu/backoffice/node_modules/gulp-useref/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/glob.js:736:12)
at lstatcb_ (/home/ubuntu/backoffice/node_modules/gulp-useref/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/glob.js:728:12)
at RES (/home/ubuntu/backoffice/node_modules/gulp-useref/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/inflight/inflight.js:23:14)
at f (/home/ubuntu/backoffice/node_modules/gulp-useref/node_modules/vinyl-fs/node_modules/glob-stream/node_modules/glob/node_modules/once/once.js:25:25)
at FSReqWrap.oncomplete (fs.js:82:15)
Ваш 'sass' должен вернуть поток, иначе Gulp не будет знать, что он закончен. Но, кроме этого, я не совсем понимаю, что случилось. Задача 'template-cache' не использует ничего из задачи' sass'. Он ищет только файлы HTML, тогда как задача 'sass' выводит CSS. Они, похоже, никак не связаны. Похоже, что ошибка исходит от чего-то другого. – MadScone
Спасибо @MadScone, вы правы на обеих учетных записях. Мы обнаружили ошибку сегодня, и это было вызвано тем, что не возвращал поток. Кэш-шаблон не была неудачной задачей, это была задача useref, которая выполнялась параллельно ей. Если вы опубликуете свой комментарий в качестве ответа, я буду рад принять его. –
@MadScone, я добавляю ваш комментарий в качестве ответа и принимаю его, если вы хотите сделать это сами, чтобы получить кредит, чувствуя себя свободным, и я удалю свой ответ. –