gulp自动刷新 监听改变自动刷新完整版

有时候web小项目用不到cli脚手架,自己撸一个监听文件改变自动刷新浏览器就非常适合.废话不多说,上搭建流程.

目标

  • gulp运行项目成功后,自动打开浏览器且打开指定页面
  • 监听项目下特定文件改变刷新浏览器

环境

  • macos系统
  • node.js
  • npm
  • gulp

关于node.js和npm的安装这里就不在赘述,网上的教程比较全.这里主要关注gulp

一 gulp的安装

1 全局安装

首先确保你已经正确安装了node.js环境.然后以全局的方式安装gulp:

npm install -g gulp
2 项目安装

全局安装gulp后,还需要在每个要使用gulp的项目中都单独安装一次。把目录切换到你的项目文件夹中,然后在命令行中执行:

npm install gulp

这里可加 -D也可不加,根据个人项目的需要而定

全部安装的gulp和本地项目安装的gulp版本必须要一致,否则启动项目的时候就会报错
这样就完成了gulp的安装。至于为什么在全局安装gulp后,还需要在项目中本地安装一次,有兴趣的可以看下stackoverflow上有人做出的回答:why-do-we-need-to-install-gulp-globally-and-locally、what-is-the-point-of-double-install-in-gulp。大体就是为了版本的灵活性,但如果没理解那也不必太去纠结这个问题,只需要知道通常我们是要这样做就行了。

二 gulp文件配置

所需要的插件
  • gulp-connect
  • gulp-watch
  • process
  • shelljs
npm i gulp-connect gulp-watch process shelljs -D

将上面的插件安装到项目中.就可以配置gulpfile.js文件了

新建gulpfile.js文件到项目根目录下

gulpfile.js内容如下

var gulp = require("gulp")
, connect = require("gulp-connect")
, watch = require("gulp-watch")
, process = require("process")
, sh = require("shelljs")

//使用gulp-connect开启一个服务器
gulp.task("connect", function () {
  connect.server({
    host: '0.0.0.0',
    port: '8868',
    root: './',
    livereload: true //自动刷新
  })
})

//自动刷新
gulp.task("html", function () {
  gulp.src(["./*.html", "./*/*.html"]).pipe(connect.reload())
})

//监听文件
gulp.task("watch", function () {
  watch(['**', '!node_modules/**'], function () {
    gulp.start('html')
  })
})

//自动打开浏览器
gulp.task("openweb", function () {
  var platform = process.platform;
  var shellStr1 = "open -a '/Applications/Google Chrome.app' 'http://192.168.2.199:8868'";
  var shellStr2 = "start http://192.168.2.199:8868";
  // 打开浏览器方法:
  var openFunc = function (str, flag) {
    // 执行并对异常处理
    if (sh.exec(str).code !== 0) {
      sh.echo(flag + '下打开浏览器失败,建议您安装chrome并设为默认浏览器!');
      sh.exit(1);
    }
  };
  if (platform === 'darwin') {
    openFunc(shellStr1, 'Mac');
  } else if (platform === 'win32' || platform === 'win64') {
    openFunc(shellStr2, 'Windows');
  } else {
    sh.echo('现在只支持Mac和windows系统!如果未打开页面,请确认安装chrome并设为默认浏览器!');
  }
})

//开启任务
gulp.task("server", ["connect", "watch"], function () {
  //前两个服务开启后 再打开浏览器
  gulp.start("openweb")
})

然后在运行gulp server就可以启动项目了

三 注意点
gulp-connect
//使用gulp-connect开启一个服务器
gulp.task("connect", function () {
  connect.server({
    host: '0.0.0.0',
    port: '8868',
    root: './',
    livereload: true //自动刷新
  })
})

其中host端口号在gulp-cennect版本大于5.0的时候 需要填写0.0.0.0 才能用ip地址访问。
小于5.0的时候可不填写,就能用ip访问

gulp-watch
//监听文件
gulp.task("watch", function () {
  watch(['*', '*/*', '!node_modules'], function () {
    gulp.start('html')
  })
})

因为gulp自带的watch无法监听gulp运行后新建的文件,而gulp-watch可以监听新建的文件。
便使用gulp-watch 替代gulp自带的watch。
其中

watch(['*', '*/*', '!node_modules']

表示监听项目下所有文件,但不包括node_modules文件夹下的文件

demo使用插件版本
"devDependencies": {
    "gulp": "^3.9.1",
    "gulp-connect": "^5.7.0",
    "gulp-watch": "^5.0.1",
    "process": "^0.11.10",
    "shelljs": "^0.8.3"
  }
四 效果

在这里插入图片描述
在这里插入图片描述

完结撒花

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值