46

我对 gulp-ruby-sass 有疑问。当我尝试运行监视任务并更改一些 .sass 文件时,会出现错误:

TypeError: Arguments to path.join must be strings 

这是我的 gulpfile.js

var gulp = require('gulp');
var jade = require('gulp-jade');
var sass = require('gulp-ruby-sass');
var watch = require('gulp-watch');

gulp.task('sass', function() {
    return gulp.src('sass/*.sass')
        .pipe(sass())
                .pipe(gulp.dest('./css'));

});
gulp.task('watch', function() {
    gulp.watch('./sass/*.sass', ['sass']);
})

我使用了 gulp-slash 但它不起作用。

4

3 回答 3

82

从 1.0.0-alpha 开始,随着gulp-ruby-sass中的语法更改,您需要使用而不是从文件或目录编译 Sass。gulp-ruby-sass()gulp.src()

如果您尝试将原始语法用于更新或最新版本,您可能会遇到以下错误:

TypeError: Arguments to path.join must be strings

例如,0.7.x 和更早版本中使用 gulp.src() 的原始语法现在已弃用:

var gulp = require('gulp');
var sass = require('gulp-ruby-sass');

// gulp-ruby-sass: 0.7.1
gulp.task('sass', function() {
    return gulp.src('path/to/scss')
        .pipe(sass({ style: 'expanded' }))
        .pipe(gulp.dest('path/to/css'));
});

1.x 中引入的新语法使用 gulp-ruby-sass() 作为 gulp 源适配器:

// gulp-ruby-sass: 1.x
gulp.task('sass', function() {
    return sass('path/to/scss', { style: 'expanded' })
        .pipe(gulp.dest('path/to/css'));
});

注意 return 语句第一行的区别。

还要记住,在撰写本文时,使用 gulp-ruby-sass 1.0.0-alpha 时,还不支持 glob。

于 2015-01-29T18:02:37.520 回答
6

gulp-ruby-sass版本 1.0.0 中的语法更改。看到这个问题:

https://github.com/sindresorhus/gulp-ruby-sass/issues/191

新文档目前在这里:

https://github.com/sindresorhus/gulp-ruby-sass/tree/rw/1.0#gulp-ruby-sass-is-a-gulp-source-adapter

这应该编译指定目录中的 sass 文件:

gulp.task('sass', function() {
    return sass('sass/')
        .pipe(gulp.dest('./css'));
});
于 2015-01-27T07:36:12.140 回答
1

有点题外话,但在也想使用gulp-sourcemaps的情况下,那里的各种文档有些过时了。要将rjb的示例与源映射一起使用,您将因此

// gulp-ruby-sass: 1.x
gulp.task('sass', function() {
    return sass('path/to/scss', { style: 'expanded', sourcemap: true })
        .pipe(sourcemaps.init({loadMaps: true}))
        .pipe(sourcemaps.write('./'))
        .pipe(gulp.dest('path/to/css'));
});

请注意,源映射的目标参数'./', 将计算为下一行中的文件夹,gulp.dest(...),实际上,在这里,map-file 最终将在'path/to/css'.

这归功于http://www.devworkflows.com/posts/getting-scss-auto-prefixer-and-source-map-to-play-nice/

于 2015-05-30T11:44:49.320 回答