Gulp第二次运行时将文件放在错误的目录中

时间:2014-05-16 23:33:28

标签: sass gulp

我和Gulp有一个奇怪的问题。这是我的Gulp文件:

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

gulp.task('default', function() {
    gulp.run('main');

    gulp.watch('sass/*.scss', function() {
        gulp.run('main');
    })
});


gulp.task('main', function() {
    return gulp.src('sass/**/*.scss')
        .pipe(sass())
        .on('error', notify.onError(function(error) { return 'Error: ' + error.message; }))
        // .pipe(autoprefixer('last 10 version'))
        .pipe(gulp.dest('./css'))
        .pipe(notify({ message: 'Your SASS has been auto-prefixed and minified.'}))
    ;
});

脚本第一次正确运行。但是在同一个脚本的第二次和后续运行中(没有Gulp停止运行),它将它作为.SCSS文件的子项目放在SASS目录中。不知道为什么会这样。我不确定如何调试。

2 个答案:

答案 0 :(得分:1)

请尝试以下代码。

它使用正确的gulp语法,用支持的函数参数替换gulp.run()

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




gulp.task('main', function() {
  return gulp.src('./sass/**/*.scss')
    .pipe(sass())
    .on('error', notify.onError(function(error) { return 'Error: ' + error.message; }))
    .pipe(gulp.dest('./css'))
    .pipe(notify({ message: 'Your SASS has been auto-prefixed and minified.'}));
});

gulp.watch('sass/*.scss', ['main']);
gulp.task('default', ['main']);

答案 1 :(得分:1)

找到答案,gulp.dest保留gulp.src的文件夹结构,覆盖你可以设置src的基本属性,这将排除基数设置为的任何文件夹

示例gulp.src('./sass/' + '**/*.scss', {base: 'sass'})现在将sass排除在目的地之外,不再为你的gulp.dest添加sass。

Seethis查看gulp.src