sehummel
sehummel

Reputation: 5568

Gulp puts file in wrong directory second time it runs

I'm having a strange problem with Gulp. Here is my Gulp file:

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

The script runs correctly the first time. But on second and subsequent runs of the same script (without Gulp having stopped running), it puts it in the SASS directory as a subitem of the .SCSS file. Any idea why this is happening. I'm not sure how to even debug.

Upvotes: 2

Views: 994

Answers (2)

dan
dan

Reputation: 2957

Found the answer, the gulp.dest keeps the folder structure of gulp.src, to override you can set the base property of the src, this will exclude whatever folder the base is set to

example gulp.src('./sass/' + '**/*.scss', {base: 'sass'}) this now excludes sass from the destination, no longer appending sass to your gulp.dest

See and this look at gulp.src

Upvotes: 1

SteveLacy
SteveLacy

Reputation: 4162

Try the following code.

It uses the correct syntax for gulp, replacing gulp.run() with the supported function arguments.

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

Upvotes: 1

Related Questions