gulp-sass не может скомпилировать с использованием полных каталогов @import с файлами имен подчеркивания

Краткое резюме: я использую @import "dir/**/*" для импорта около 100 или около того файлов _filename.scss. Подчеркивание здесь важно. Если я использую "@import"dir/specific_path/filename;" и добавляю все файлы по отдельности, они работают нормально, все компилируется. Но это не будет работать для всего каталога. Однако, если я переименую свои файлы filename.scss, все будет работать отлично, и импорт каталога работает (обратите внимание, просто удалив подчеркивание из имени файла).

Возможно, это ошибка gulp-sass, но я хочу убедиться, что не пропустил какой-то параметр или что-то в этом роде. Я мог бы просто переименовать файлы, но я хотел бы использовать соглашение _filename.scss для файлов, которые не предназначены для использования в одиночку.

Задача Sass (gulpfile.js):

gulp.task('sass', function() {
    return gulp.src('./source/css/pattern-global.scss')
        .pipe(sourcemaps.init())
        .pipe(sass({includePaths: ['./source/_patterns/']}).on('error', sass.logError))
        .pipe(sourcemaps.write())
        .pipe(gulp.dest('./source/css/patterns/'));
});

Я работаю над сайтом Drupal Pattern Lab. Но структура каталогов не имеет большого значения, поскольку речь идет об именах файлов...

Файл, в котором я вызываю @import:

@import "../_patterns/**/*";

Ошибка, которую я получаю, когда имена файлов со знаком подчеркивания:

Error in plugin 'sass'

Сообщение: source/css/pattern-global.scss Ошибка: файл для импорта не найден или нечитаем: ../_patterns/**/*. Родительская таблица стилей: /Users/XXXXX/Sites/drupal_pattern_lab/source/css/pattern-global.scss в строке 5 файла source/css/pattern-global.scss

@import "../_patterns/**/*"; ^

Примечание. Я прошел через множество проблем с gulp-sass здесь, и я не думаю, что есть одна, которая соответствует моей проблеме.

Резюме: все остается идентичным, за исключением файлов, которые я компилирую, переименованных из _filename.scss в filename.scss, и все работает. Или использование @import для конкретного файла вместо каталога также отлично работает.

Спасибо


person Mauricio    schedule 10.05.2017    source источник


Ответы (1)


Почесав голову некоторое время, я нашел это:

https://www.npmjs.com/package/gulp-sass-glob

gulp.task('sass', function() {
    return gulp.src('./source/css/pattern-global.scss')
        .pipe(sourcemaps.init())
        .pipe(sassGlob()) //this was what I was missing
        .pipe(sass({includePaths: ['./source/_patterns/']}).on('error', sass.logError))
        .pipe(sourcemaps.write())
        .pipe(gulp.dest('./source/css/patterns/'));
});

person Mauricio    schedule 18.05.2017