玩转gulp之watch监听文件自动编译

博客移至 https://www.dodoblog.cn/blog?id=5befc928e0feb34495b57035 

我们在写页面的时候,用到sass less等css预处理器的时候,虽然写的很爽,但是有一个麻烦就是老是要不停的去编译文件

例如我们写一个variable.scss时,希望引入这个scss文件的index.scss list.scss都发生变化。可能还有很多很多。那我们应该怎么做呢

还有如果我们希望html变化了就重新编译一下scss

诸如此类,ok我们现在就开始着手解决问题。

1. 我们上次讲了编译less的方法,参见如何用gulp编译less,我们会在这个的基础上开始讲解。

2. 由于我更加钟爱sass,我们现在回引入新的npm依赖,gulp-sass去编译我所写的sass文件,用法和gulp-less相同

解决多个sass文件同时编译,可以用通配符*来表示所有文件

gulp.task('sass',function(){
    gulp.src('./stylesheets/sass/*.scss') //*表示所有的scss文件
        .pipe(sass())
        .pipe(gulp.dest('./stylesheets/css'))
})

会把对应的scss全部编译成scss,而且不会去编译对应的variable和mixin

但是我们不想每次改变输入一次gulp,于是乎我们希望这些步骤可以自动完成的话,就需要用gulp的watch方法去监听文件变化了。

我们的需求是监听sass文件夹下的所有文件,如果发生变化就立马执行sass任务。

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

所以我们添加以上代码,**是指所有深度的文件夹,包括varible和mixin

 

运行gulp watch命令实现监听

同时如果我们也可以添加更多的监听命令

gulp.task('watch',function(){
    gulp.watch('./stylesheets/**/*.scss',['sass']);
    gulp.watch('./index.html',['sass']);
})

例如监听index.html页面什么的,也去更新css文件。

我在我们就可以运用gulp完成监听咯。我们的前端自动化大业又向前走进了一大步。啦啦啦

原文地址:https://www.cnblogs.com/sowhite/p/6802891.html