【发布时间】:2015-04-15 18:25:44
【问题描述】:
我正在使用 gulp-ruby-sass 来编译我的 js 和 sass。
我第一次遇到这个错误 TypeError:Arguments to path.join must be strings
找到 this answer,这是因为我使用的是带有 gulp-sass 的源映射,而答案建议改用 gulp-ruby-sass。
接下来我尝试使用以下语法编译我的所有 SASS 文件:
gulp.task('sass', function () {
return sass('public/_sources/sass/**/*.scss', { style: 'compressed' })
.pipe(sourcemaps.init())
.pipe(concat('bitage_public.css'))
.pipe(sourcemaps.write('./maps'))
.pipe(gulp.dest('public/_assets/css'))
.pipe(livereload());
});
产生此错误的原因:
gulp-ruby-sass stderr: Errno::ENOENT: No such file or directory - public/_sources/sass/**/*.scss
然后我注意到在答案中我发现作者写道,地球 ** 尚不支持:
另外请记住,在撰写本文时,使用 gulp-ruby-sass 1.0.0-alpha 时,还不支持 glob。
我做了更多的挖掘并找到了一种使用数组来指定我的 SASS 文件路径的方法,所以我尝试了以下方法:
gulp.task('sass', function () {
return sass(['public/_sources/sass/*.scss',
'public/_sources/sass/layouts/*.scss',
'public/_sources/sass/modules/*.scss',
'public/_sources/sass/vendors/*.scss'], { style: 'compressed' })
// return sass('public/_sources/sass/**/*.scss', { style: 'compressed' })
.pipe(sourcemaps.init())
.pipe(concat('bitage_public.css'))
.pipe(sourcemaps.write('./maps'))
.pipe(gulp.dest('public/_assets/css'))
.pipe(livereload());
});
但我仍然收到Errno::ENOENT: No such file or directory,它列出了我放入该数组的所有目录。
如何用gulp编译多目录下的SASS?
SASS 源文件夹结构:
_sources
layouts
...scss
modules
...scss
vendors
...scss
main.scss
【问题讨论】:
-
首先使用 gulp.src,然后使用 sass 插件对其进行管道传输。 Gulp src 使用 ** 处理地球仪
-
^ 不正确,请阅读问题
-
文档中的 Sourcemap 用法看起来与您的示例不同:github.com/sindresorhus/gulp-ruby-sass/tree/rw/1.0#sourcemap
-
我不明白为什么它不正确 Heikki。他可以使用旧版本的插件,该插件支持多个文件,并且可能工作正常,并最终在将来自动将功能添加到 ** inglobe 时更改它
-
我同意,加上它是正确的:)
标签: css sass gulp gulp-ruby-sass