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

问题描述 投票:0回答:1

快速总结,我使用 @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'

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

@导入“../_patterns/**/*”; ^

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

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

谢谢

gulp gulp-sass
1个回答
4
投票

挠头一段时间后我找到了 npm 包 gulp-sass-glob.

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