Ошибка Sass-gulp при импорте всего каталога

Начну с того, что я искал несколько часов и не нашел решения, которое подходит мне. Я пытаюсь уйти от Compass и переключиться на Sass для веб-сайта моей компании, и я сталкиваюсь с проблемой, что Sass не распознает мои каталоги; Я получаю ошибку "файл не найден или не читается".

Я попытался скомпилировать, используя vanilla Sass, gulp-sass и gulp-ruby-sass, и у меня у всех одна и та же ошибка. Вот моя структура папок:

- css
- sass
  - variables
     - _colors.scss
     - _type.scss   (... etc.)
  - abstractions
  - base
  - components
- gulpfile.js

Мой файл styles.scss выглядит следующим образом (вверху есть куча комментариев):

@import "variables/**/*";
@import "abstractions/**/*";
@import "base/**/*";
@import "components/**/*";

И мой gulpfile.js выглядит так:

var    gulp = require('gulp'),
       sass = require('gulp-sass');

gulp.task('sass', function() {
  gulp.src('sass/**/*.scss')
    .pipe(sass().on('error', sass.logError))
    .pipe(gulp.dest('./css/'));
});


gulp.task('default', ['sass'], function() {
  gulp.watch("sass/**/*.scss", ['sass']);
});

Точная ошибка, которую я получаю:

error sass/lgfcu.styles.scss (Line 23: File to import not found or unreadable: variables/**/*.)

Я пытался использовать "includePaths" с gulp-sass, и мне не повезло. Я также пытался играть с путями: ./variables/**/*, variables/**/*.scss, так далее.

Если я добавлю полный путь к определенному файлу, он будет работать, но глобализация не работает. Любая помощь будет принята с благодарностью!

1 ответ

У меня была такая же проблема с использованием gulp-sass. Если вы хотите импортировать весь каталог, вы должны добавить gulp-sass-bulk-import.

Вы можете сделать это, установив его в свой проект, как показано ниже:

npm install --save-dev gulp-sass-bulk-import

Тогда внутри вашего gulpfile.js:

var gulp = require('gulp'),
    sass = require('gulp-sass'),
    bulkSass = require('gulp-sass-bulk-import');

gulp.task('sass', [], function() {
    gulp.src( 'sass/**/*.scss' )
        .pipe( bulkSass() )
        .pipe( sass().on('error', sass.logError) )
        .pipe( gulp.dest( './css/' ));
});

Убедитесь, что вы используете правильный пакет для обработки файлов sass:

Установка npm --save-dev gulp-sass

Есть еще один пакет gulp-ruby-sass, который не будет работать с вышеуказанным скриптом, хотя он также удобен.

Наслаждаться.

Другие вопросы по тегам