Подтвердить что ты не робот

Gulp TypeError: Аргументы в path.join должны быть строками

У меня проблема с 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, но он не работает.

4b9b3361

Ответ 1

С синтаксическими изменениями в gulp -ruby-sass, начиная с 1.0.0-alpha, вам нужно будет использовать gulp-ruby-sass() вместо gulp.src(), чтобы скомпилировать ваш Sass из файла или каталога.

Если вы попытаетесь использовать оригинальный синтаксис с более новыми или последними версиями, вы можете столкнуться со следующей ошибкой:

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 globs еще не поддерживаются.

Ответ 2

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

Ответ 3

Немного не по теме, но в случае, если вы также захотите использовать 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'));
});

Обратите внимание, что аргумент назначения для sourcemaps, './', будет оцениваться в папке в строке ниже, gulp.dest(...), эффективно здесь, файл-карта окажется в 'path/to/css'.

Кредит для этого - http://www.devworkflows.com/posts/getting-scss-auto-prefixer-and-source-map-to-play-nice/.