gulp-ruby-sass错误:必须提供模式

时间:2016-07-12 12:32:28

标签: javascript gulp

这是我的目录结构:

Here

我设置了我的工作站,并设置了我的Gulp文件以处理我的文件夹格式,但它无法正常工作。

这是我的Gulp文件:

var gulp      = require('gulp'),
    sass        = require('gulp-ruby-sass'),
    imagemin    = require('gulp-imagemin'),
    changed     = require('gulp-changed'),
    browserSync = require('browser-sync'),
    livereload = require('gulp-livereload'),    
    gp_concat = require('gulp-concat'),
    gp_rename = require('gulp-rename'),
    gp_uglify = require('gulp-uglify'),
    watch = require('gulp-watch');


gulp.task('sass', function () {
  gulp.src('./app/template/css/style_v1.scss')
    .pipe(sass())
    .on('error', function (err) { console.log(err.message); })
    .pipe(gulp.dest('./dist/css'))
    .pipe(livereload());
});

gulp.task('compress', function() {
  gulp.src('./app/*.js')
   .pipe(gp_concat('concat.js'))
        .pipe(gulp.dest('dist'))
        .pipe(gp_rename('script.min.js'))
        .pipe(gp_uglify())
        .pipe(gulp.dest('./dist/js'));
});

gulp.task('jpg', function() {
    gulp.src('./template/img/**/*.*')
        .pipe(changed('./dist/img/'))
        .pipe(imagemin({
            progressive: true
        }))
        .pipe(gulp.dest('./dist/img/'));
});

gulp.task('browser-sync', function() {
    browserSync.init(['./dist/css/**', 'index.php'], {
        server: {
            baseDir: './',
            index: 'index.php'
        }
    });
});

gulp.task('watch', ['sass', 'browser-sync','compress'], function () { 
    return watch('./app/template/css/style_v1.scss', function () {
        gulp.src('./app/template/css/style_v1.scss')
            .pipe(gulp.dest('build'));
    });
});

当我运行gulp watch时,它会返回:

(node:6668) fs: re-evaluating native module sources is not supported. If you are using the graceful-fs module, please update it to a more recent version.
[08:42:23] Using gulpfile /var/www/html/evandro/sistema_metas/gulpfile.js
[08:42:23] Starting 'sass'...
[08:42:23] 'sass' errored after 7.09 ms
[08:42:23] Error: must provide pattern

有什么问题?

我有另一个代码,CSS Watch不起作用,只看HTML,它有什么用?

1 个答案:

答案 0 :(得分:3)

gulp-ruby-sass与其他gulp插件的工作方式不同。您没有将其传递给.pipe()。如果您查看the documentation,请说明以下内容:

  

使用gulp-ruby-sass 代替gulp.src 来编译Sass文件。

这意味着您必须像这样使用它:

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

gulp.task('sass', function () {
  return sass('./app/template/css/style_v1.scss')
    .on('error', function (err) { console.log(err.message); })
    .pipe(gulp.dest('./dist/css'))
    .pipe(livereload());
});

或者,您可以使用gulp-sass插件代替gulp-ruby-sass。它不使用SASS的Ruby实现,而是使用C实现(libsass)。它允许您像往常一样使用.pipe()对大多数其他gulp插件:

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

gulp.task('sass', function () {
  return gulp.src('./app/template/css/style_v1.scss')
    .pipe(sass())
    .on('error', function (err) { console.log(err.message); })
    .pipe(gulp.dest('./dist/css'))
    .pipe(livereload());
});