2017-05-05 19 views
1

Gulp sass/gulp watch命令无法覆盖已经存在/生成的.css文件。 因此,当文件夹中没有生成的css文件时,该命令正常工作。但是,如果该文件存在于文件夹中,我会收到错误。Gulp sass无法覆盖已存在的文件

[12时17分39秒]错误:EPERM:操作不允许,打开 'C:\我的文件夹\项目\分量\网站产品\演示\程序\ CSS \ style.css的'

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

gulp.task('sass', function() { 
    return gulp.src('./demo/app/scss/**/*.scss') 
    .pipe(sass().on('error', sass.logError)) 
    .pipe(gulp.dest('./demo/app/css')); 
}); 

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

不确定其相关,但我不使用gulp指南针。我正在使用node-sass。 在此先感谢您的帮助。

回答

0

可以使用干净的任务:

// Path 
var paths = { 
    scss: { 
    input: 'dev/assets/scss/**/*.{scss,sass}', 
    output: 'public/assets/css' 
    } 
}; 

// SCSS 
gulp.task('scss', function() { 
    return sass(paths.scss.input) 
    .pipe(autoprefixer('last 2 version')) 
    .pipe(cssnano()) 
    .pipe(gulp.dest(paths.scss.output)) 
    .pipe(browserSync.reload({stream: true})); 
}); 

// Clean 
gulp.task('clean', function() { 
    return del(['public/**/*']); 
}); 


// Default 
gulp.task('default', ['clean'], function() { 
    gulp.start('scss'); 
}); 
1

解决它终于,那是因为在的WebPack锁定文件。 二手一饮而尽,chmod来绕过它:)

下面是最终脚本:

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

gulp.task('sass', function() { 
    return gulp.src('./demo/app/scss/**/*.scss') 
    .pipe(chmod(0o755)) 
    .pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError)) 
    .pipe(gulp.dest('./dist/demo/css')); 
}); 


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