gulp 非常好用,编写好 gulpfile.js 文件后,一般情况下在命令行用 gulp 就能启动开发环境,大大简化了开发流程。但是有一个问题没有解决,就是编写 gulpfile.js 文件过程中,如果这个时候 gulp 已经启动,修改 gulpfile.js 文件,进程并不会变化,我们希望 gulpfile.js 文件修改后,gulp 进程能够自动重启

我们接下去以这个脚手架 gulp-simple 为例

原始的 gulpfile.js 文件如下:

const gulp = require('gulp')
const browserSync = require('browser-sync').create()
const reload = browserSync.reloadgulp.task('server', () => {browserSync.init({server: {// 根目录,index.html 文件所在的目录baseDir: './'  }})gulp.watch("*.html").on('change', reload);
})gulp.task('default', ['server'])

思考,我们其实需要监听 gulpfile.js 文件,然后杀掉原来的进程,开启一个新的进程:

const gulp = require('gulp')
const browserSync = require('browser-sync').create()
const reload = browserSync.reload
const spawn = require('child_process').spawngulp.task('gulp-autoreload', () => {// 保存进程,任何时候只能有一个 gulp 进程var p// gulpfile.js 一旦改动,则重启进程gulp.watch('gulpfile.js', spawnChildren)// 第一次启动任务的时候,会默认执行 server 任务开启本地服务spawnChildren()function spawnChildren(e) {// 杀掉原来的进程p && p.kill()// 开一个新的进程// 原来的调用方式是 gulp serverp = spawn('gulp', ['server'], {stdio: 'inherit'})}
})gulp.task('server', () => {browserSync.init({server: {// 根目录,index.html 文件所在的目录baseDir: './'  }})gulp.watch("*.html").on('change', reload)
})gulp.task('default', ['gulp-autoreload'])

但是,同样有瑕疵,每次修改 gulpfile.js 文件,会在浏览器新打开个 tab,跟之前的 url 一致,如果多次修改 gulpfile.js 文件,其实会打开多个 tab,这几个 tab 都能 work,就会有多个 tab 同时刷新,耗费性能

以上是从原理上解释,实际开发中有更简单的工具,推荐 gulper,全局安装后,使用方式和之前的 gulp 一摸一样,只是换了个名字

npm install -g gulper gulp
gulper

参考 How can Gulp be restarted upon each Gulpfile change?

如何在修改 gulpfile.js 文件后自动重启 gulp?相关推荐

  1. Node.js笔记 - 修改文件后自动重启node服务

    每次修改代码后都要手动重启node服务,虽然不是复杂的事,但是每次都要这么搞一次颇为麻烦. 所以nodemon登场了! nodemon会监测你已运行程序中的文件和目录,一旦被修改,它会自动重启node ...

  2. Gulp简介、gulp基本使用步骤、gulp-cli工具、gulpfile.js文件、gulp插件

    Gulp介绍: gulp概念: 基于node开发的前端构建工具模块,将前端机械化的操作编写成任务自动化操作,类似于webpack构建,可以完成代码压缩.语法转换.抽离公共文件.自动实现浏览器刷新等. ...

  3. es5直接引入html文件,ES6+转ES5(webpack+babel、指定多个js文件、自动注入)

    接续上篇ES6+转ES5,本篇将使用webpack和babel将多个不同目录下指定的多个ES6+语法的js文件编译为ES5,并将编译后的文件配置注入对应的html文件. 一.新建项目,目录如下 二.执 ...

  4. 浏览器F12开发者工具修改替换js文件

    本次以修改CSDN网站版权声明为例. 右键定位需要修改的JS文件 复制别人文章中的内容,只要字符长度大于140就会添加版权声明,因此查看copy事件. 点击在边栏中显示直接定位文件位置. 开启替换功能 ...

  5. Idea-每次修改JS文件都需要重启Idea才能生效解决方法

    Idea-每次修改JS文件都需要重启Idea才能生效解决方法 参考文章: (1)Idea-每次修改JS文件都需要重启Idea才能生效解决方法 (2)https://www.cnblogs.com/ey ...

  6. 解决修改/etc/sudoers文件后:报 语法错误 near line 23

    解决修改/etc/sudoers文件后:报 语法错误 near line 23 pkexec visudo

  7. [css] 怎样修改chrome记住密码后自动填充表单的黄色背景?

    [css] 怎样修改chrome记住密码后自动填充表单的黄色背景? input:-webkit-autofill { -webkit-box-shadow: 0 0 3px 100px #eee in ...

  8. 20190616 IDEA-每次修改JS文件都需要重启Idea才能生效解决方法

    20190616 IDEA-每次修改JS文件都需要重启Idea才能生效解决方法 参考文章: (1)20190616 IDEA-每次修改JS文件都需要重启Idea才能生效解决方法 (2)https:// ...

  9. win10关机后自动重启_win10电脑关机后自动开机怎么解决

    大家都知道电脑可以自动关机的功能,但是不知道有没有遇到过电脑自动开机的呢?你听起来都会觉得很神奇吧,那是无缘无故的自动开机的节奏,遇到这样的情况怎么办呢?今天小编为大家带来电脑关机后自动开机的解决方法 ...

最新文章

  1. 002.Heartbeat部署及httpd高可用
  2. 1013 Battle Over Cities (25分)(用割点做)
  3. 【Clickhouse】Dockerfile 文件,加入 mysql
  4. Android笔记(二十五) ListView的缓存机制与BaseAdapter
  5. ABAP--SAP是如何回写CL_GUI_ALV_GRID_BASE的MT_MODIFIED_CELLS的
  6. STM32 之八 在线升级(IAP)超详细图解 及 需要注意的问题解决
  7. php 文字代码,PHP 彩色文字实现代码
  8. HALCON示例程序connection.hdev分割连通域
  9. java http头 字符串转日期_springboot~DTO字符字段与日期字段的转换问题
  10. python语言的核心理念是_Python 编程语言的核心是什么?
  11. Magento搬家、换域名、重新安装教程
  12. Linux 命令(34)—— vim 命令
  13. 小程序正式发布后,打开白屏(已解决)
  14. windows10误删Administrator用户的家目录之后
  15. linux下部署selenium爬虫程序
  16. spring data jpa 使用@Query 动态参数查询案例分析
  17. 1048 数字加密.测试点2.5
  18. 债券融资和股权融资区别,债券融资的优缺点是什么
  19. 两角和与差的正弦、余弦、正切公式推导
  20. zoc for mac注册码

热门文章

  1. 收藏贴 :2019年必备43种区块链开发工具
  2. android: 记录及回复lisView的位置
  3. [转] FFmpeg常用基本命令
  4. apache正向代理配置
  5. C++/Qt 序列化操作
  6. 【Go语言】【15】GO语言的面向对象
  7. Dvsdk 下的CMEM学习
  8. redhat linux 5 nfs
  9. 关于T4,正在发生的...
  10. Elasticsearch 支持哪些类型的查询?