gulp-sass如何只编译修改过的scss文件?

目前我的代码如下:

gulp.task('sass', function() {
    gulp.src('a/static/sass/*')
        .pipe(changed('a/static/css'))
        .pipe(sass())
        .pipe(gulp.dest('a/static/css'))
        ...

但是似乎还是编译了所有的.scss文件,我看了生成文件的修改时间。请问要如何只编译修改过的scss文件?
另外想知道下,gulp-changed的工作原理,到底是如何对比生成的文件的?

阅读 5.7k
2 个回答
gulp.task('sass', function() {
    gulp.src('a/static/sass/*')
        .pipe(changed('a/static/css'))
        .pipe(sass())
        .pipe(gulp.dest('a/static/css'))

这是你写的编译所有scss文件的一个任务

你可以在

function parseSingleFile(file){
    //sass编译一个scss文件的方法
    return 
        gulp.src(file)
        .pipe(changed('a/static/css'))
        .pipe(sass())
        .pipe(gulp.dest('a/static/css'))
}       
gulp.watch("a/static/sass/*.scss", function(e){
    console.log('\n文件改变的路径为' + e.path);//e.path 比如e://a/static/sass/demo.scss
    parseSingleFile(e.path);
  });        

gulp.src('a/static/sass/*')这里需要指定文件扩展名吧。

只编译修改过的可以用监听来实现
`gulp.task('watch', function() {

gulp.watch('a/static/sass/*.scss', 'sass');

});`

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题