gulp-sass 无法使用带有下划线名称文件的@import 完整目录进行编译

gulp-sass fails to compile using @import full directories with underscore name files

快速总结,我正在使用@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 模式实验室网站上工作。但是目录结构并不重要,因为它是文件名的问题...

我调用@import的文件:

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

当文件名带有下划线时出现的错误:

Error in plugin 'sass'

留言: source/css/pattern-global.scss 错误:找不到或无法读取要导入的文件:../_patterns/**/*。 父样式 sheet: /Users/XXXXX/Sites/drupal_pattern_lab/source/css/pattern-global.scss 在 source/css/pattern-global.scss

的第 5 行

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

注意:我在这里经历了很多 gulp-sass 问题,但我认为没有一个符合我的问题。

总结:除了我正在编译的文件从 _filename.scss 重命名为 filename.scss 之外,保持一切相同,一切正常。或者在特定文件而不是目录上使用@import 也可以正常工作。

谢谢

挠了挠脑袋,我发现了这个:

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/'));
});