gulp 热更新第二篇 —— gulp-watch

LiveReload可以理解为即时刷新

实现原理:通过在本地开启一个websocket服务,检测文件变化,当文件被修改后触发livereload任务,推送消息给浏览器刷新页面。

// require那些install哪些就OK
var gulp = require("gulp"),
    cssmin = require("gulp-minify-css"),
    rename = require("gulp-rename"),
    connect = require("gulp-connect");

gulp.task("css", function () {
    gulp.src("./src/css/*.css")
        // 压缩
        .pipe(gulp.dest("./dist/css"))
        .pipe(cssmin())
        // 重命名
        // .pipe(rename(function (filename) {
        //     filename.basename += "min"
        // }))
        .pipe(gulp.dest("./dist/css"));
})

gulp.task("copy", function () {
    gulp.src("./src/*.html")
        .pipe(gulp.dest("./dist"));
    gulp.src("./src/css/*.css")
        .pipe(gulp.dest("./dist/css"));
})

gulp.task("watch", function () {
    gulp.watch("./src/**/*.*", ["copy", 'css']);
    gulp.watch("./dist/**/*.*", ["reload"]);
})

gulp.task("reload", function () {
    gulp.src("./dist/*.html")
        .pipe(connect.reload());
})

gulp.task("server", function () {
    connect.server({
        root: "./dist",
        livereload: true,
        port: 8080
    })
})

gulp.task("default", ["server", "watch"]);


// gulp启动任务后,终端显示在8080端口开启了一个http服务,而在35729端口开启了LiveReload服务,实际为一个WebSocket服务。
// 打开页面,可以看到原始页面中插入了livereload的js文件。
// 在network中WS下可以看到WebSocket的消息。
// .pipe(gulp.dest("./dist/css")) 目前这句要写两遍才压缩成功,目前还没弄清楚原因
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,232评论 4 61
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,141评论 1 32
  • 0 米小姐第一次去北京,已经28岁了。她在高铁上,盯着手机上联通发来的首都欢迎你的短信,久久出神。 然后她发了一条...
    施施小洛阅读 599评论 1 2
  • 在本学期最后的一段日子里我忽然好怕,不知是自己堕落了还是怎样,忽然好迷茫,我知道自己还有好多的事情要去做,但就是不...
    我是一个小青龙阅读 141评论 0 1
  • 嘿,你好,很高兴遇见你
    Tsandoku阅读 365评论 0 0