У меня вопрос: почему я не получаю сообщение об ошибке из задач gulp, когда я использую неправильный путь импорта в моих файлах scss?
Я использую это задание gulp для компиляции и минимизации моих файлов sass в их целевой каталог
// gulpfile.js
var gulp = require('gulp');
var sass = require('gulp-sass');
var frontendSassSrcDir = 'build/frontend/sass/**';
var frontendCssDestDir = 'public/css/';
var backendSassSrcDir = 'build/backend/sass/**';
var backendCssDestDir = 'public/css/';
gulp.task('frontend-style', function() {
return gulp
.src(frontendSassSrcDir + '/*.scss')
.pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError))
.pipe(gulp.dest(frontendCssDestDir))
});
gulp.task('backend-style', function() {
return gulp.src(backendSassSrcDir + '/*.scss')
.pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError))
.pipe(gulp.dest(backendCssDestDir));
});
gulp.task('default-watch', function() {
gulp.watch('build/frontend/sass/**/*.scss', ['frontend-style']);
gulp.watch('build/backend/sass/**/*.scss', ['backend-style']);
});
вот структура папок
- project-folder
- build
- backend
- sass
- backend.scss
- frontend
- sass
- frontend.scss
- node_modules
- public
- css
- backend.css
- frontend.css
gulpfile.js
Вот неправильное содержимое моего файла scss
@import "node_modules/bootstrap/scss/functions";
@import "node_modules/bootstrap/scss/variables";
@import "node_modules/bootstrap/scss/mixins";
если я запускаю эту команду в командной строке, похоже, она работает, потому что я получаю этот вывод, однако он генерирует пустой файл css
$ node_modules/gulp/bin/gulp.js frontend-style
[20:50:40] Using gulpfile /opt/workspace/www/bhajanBook/gulpfile.js
[20:50:40] Starting 'frontend-style'...
[20:50:40] Finished 'frontend-style' after 73 ms
почему он не выдает мне такое же сообщение об ошибке, как эта команда?
$ node_modules/sass/sass.js ./build/frontend/sass/frontend.scss ./public/css/frontend.css
Error: Can't find stylesheet to import.
@import "node_modules/bootstrap/scss/functions";
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
build/frontend/sass/frontend.scss 1:9 root stylesheet
Запуск в командной строке помог мне исправить это
@import "./../../../node_modules/bootstrap/scss/functions";
@import "./../../../node_modules/bootstrap/scss/variables";
@import "./../../../node_modules/bootstrap/scss/mixins";
Я узнал, что on('error', sass.logError)
выдает ошибку, если я делаю ошибку в gulpfile.js, но она не должна отвечать за ее перехват?
Есть ли более конкретное решение для отображения сообщения об ошибке, если я сделаю ошибку в scss
файлах?