快速总结,我使用 @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 也可以正常工作。
谢谢
挠头一段时间后我找到了 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/'));
});