2019独角兽企业重金招聘Python工程师标准>>>

这个是做什么用的?

fswatch是一个工具, 通过检测文件的变化,并触发指定的命令

为什么需要fswatch

写完代码最重要的事情之一, 就是检测一下写好的代码是不是能够工作. 要早提前做的话, 收效越好, 发现的问题越多. 但是如果每次都需要make test, 每次都去编译或者测试的话, 还是挺烦人的. 所以如果能有一个自动化的工具去做的话, 那将是件很爽的事情.

最近我在忙一个项目, 经常性的需要, 停下来, 编译一下代码,看看能不能work. 真是烦死人了. 于是我就写了fswatch这个工具, 但是这种东西, 在我写第一版的时候写的不太好, 易用性太差, 可悲的是我却不知怎么去改进. 有人14个人star过我的这个小项目, 但我总感觉对不起他们. 真恨不得某一天删掉这么一坨shit的代码.

事情在某一天终于有了转机, 周末我研究了下sublime text2. 我过去只是听说它但没有真正的用过. sublime text2 有很多的配置文件(json格式的), 你只需要配置好, 就可以万事大吉了. 把配置拷贝到其他电脑上, 也能很好的work. 看来配置文件真是个好东西啊.

曾有人fork了我的那个fswatch工具, 把fswatch改成一个配置文件的方式, 但是改的很简单, 当时我没有在意. 但现在看来,配置文件的方式真的很nice, 你只需要在项目下建立一个.fsw.yml的配置文件, 进行一次参数的调整. 以后只需要运行fswatch就可以了. 多么简单的一个道理,理解起来去花了这么久.

于是边想边做, 想通的当天晚上就将原来代码中将近80%的垃圾代码清理了, 只留下20%的核心, 然后加上了配置文件生成和加载的代码, 将原来重启程序时的kill改成的group kill. 很不幸的是 目前group-kill只能在mac和linux上跑的很好, 我暂时也没想到神马好的办法, 能让他在win上也ok运行. (2016年win也支持了)

目前拿这个fswatch替代bee, 实时的去编译运行c,cpp,java,golang等等, 应该都不是问题. 但是和bee比有什么优势呢?

既然大神问了,我就列举下:

  1. bee只适合Go语言; 而fswatch可以适用各种语言, 甚至是文件的远程同步
  2. bee可以通过配置指定监控的文件夹; fswatch可以配置监控的文件夹并指定监控的深度(0代表当前目录)
  3. bee可以指定监控文件的后缀; fswatch支持使用正则表达式, 来过滤监控到的文件.
  4. bee.json需要重其他地方拷贝;但是.fsw.yml可以自动生成出来.
  5. fswatch支持group kill. 这样可以确保fswatch停止后,不会有垃圾进程的存在.
  6. fswatch会根据程序的运行时间自动判断, 是否为服务端程序, 并适当的修改重启策略.
  7. bee功能庞大; fswatch的代码精简.

上手使用

配置文件比较长, 但是可以用fswatch自动去生成. fswatch init 直接运行这个命令就可以. 然后你会在目录下面发下一个.fswatch.json文件. 内容大致如下(下面是个golang程序的配置文件).

desc: Auto generated by fswatch [fswatch]
triggers:
- pattens:- '**/*.go'# also support '!**/test_*.go'env:DEBUG: "1"# if shell is true, $cmd will be wrapped with `bash -c`shell: truecmd: go test -vdelay: 100mssignal: "KILL"
watch_paths:
- .
watch_depth: 5

watch_paths只需要监控那些目录。一般.fsw.yml文件是和代码放在一起的,所以监控目录写.就可以了。 其中pattens是想监控的文件, 如果需要监控go,但是需要过滤掉test_*.go的文件,只需要写

- pattens:- '**/*.go'- '!**/test_*.go'

这个样子就可以了.

配置也可以简单一些,python的可以把配置文件写成

desc: Auto generated by fswatch [fswatch]
triggers:
- pattens:- '**/*.py'cmd: python main.pysignal: "KILL"

golang的可以写成

desc: Auto generated by fswatch [fswatch]
triggers:
- pattens:- '**/*.py'shell: truecmd: go build && ./appsignal: "KILL"

java的(唉, 我java不熟, 就不写了吧)

其他语言的请各自发挥想象了, 项目地址的主页是 https://github.com/codeskyblue/fswatch

安装方法

go get -u -v github.com/codeskyblue/fswatch

运行起来还是挺不错的, 截个图贴在了下面

mac上如果遇到提示说, 文件打开过多. 简单的修改下就好使了. 具体参考http://ronglei0324.blog.163.com/blog/static/676332232013122112049188/

转载于:https://my.oschina.net/goskyblue/blog/194240

使用fswatch工具进行golang的热编译相关推荐

  1. 【Windows 逆向】CheatEngine 工具 ( CheatEngine 简介 | 使用 Lazarus 编译 CE 源码 | CheatEngine 相关文档资料 )

    文章目录 一.CheatEngine 简介 二.使用 Lazarus 编译 CE 源码 三.CheatEngine 相关文档资料 一.CheatEngine 简介 CheatEngine 简称 CE ...

  2. webpack 与 热编译webpack-dev-server

    webpack.config.js 只需要注意加大加粗的地方. var webpack = require("webpack"); var HtmlWebpackPlugin = ...

  3. sass/lsee 转换css 网站 SASS 转 CSS 工具,在线 SASS/SCSS 编译工具 - 在线工具-wetools.com微工具

    sass/lsee 转换css 网站 SASS 转 CSS 工具,在线 SASS/SCSS 编译工具 - 在线工具-wetools.com微工具

  4. golang学习遇到编译异常信息can‘t load package...

    golang学习遇到编译异常信息can't load package... 参考文章: (1)golang学习遇到编译异常信息can't load package... (2)https://www. ...

  5. 联盛德W800开发板|SDK|make menuconfig|工具链|本地命令行编译|Windows11|msys|清华源|(4)、联盛德W800开发板命令行编译指南

    目录 W800 芯片介绍: W800开发板 主要接口如下: 1 概述 2 准备工作 3.SDK目录结构如下: 4 W800编译固件编译 4.1 安装MSYS到本地: 4.2增加国内软件更新源 ​编辑4 ...

  6. 阿里Java诊断工具 arthas - 生产环境反编译动态修改程序调试应用

    阿里Java诊断工具 arthas - 生产环境反编译动态修改程序调试应用 一.arthas 上篇文章我们借助arthas监测线上系统的运行信息.排查程序运行缓慢问题,尽管这样已经非常好了,但是还是会 ...

  7. Linux 之八 完整嵌入式 Linux 环境及构建工具、(交叉)编译工具链、CPU 体系架构

      最近,工作重心要从裸机开发转移到嵌入式 Linux 系统开发,由于之前对嵌入式 Linux 环境并不是很了解,因此,第一步就是需要了解如何搭建一个完整的嵌入式 Linux 环境.现在将学习心得记录 ...

  8. go run main.go 参数_介绍一款Go项目热编译工具gowatch

    使用场景 在golang项目编写过程中,需要对项目不断的进行构建go build并调试以快速发现问题,而我们每次进行手动的进行go build又太重复,所以写了这么一个工具gowatch来实时的监听文 ...

  9. Android工具修复属性,Android 热修复介绍之代码修复

    什么是Android热修复技术 简单来说就是不重新安装apk的情况下,通过补丁,修复bug 正常开发流程 热修复开发流程 目前主流的热修复技术框架 阿里系的: Andfix.Hotfix.Sophix ...

最新文章

  1. postman 使用_如何使用Postman实现数据驱动?
  2. python知识:*args 和**kwargs
  3. Nginx教程系列四:实现反向代理配置
  4. JSF2.0与纯JS框架
  5. 【百度分享】基于内核模块的测试代码编写(二)
  6. 【转】LAMP网站架构方案分析【精辟】
  7. python numpy中数组.min()
  8. C语言 顺时针打印矩阵(二维数组)
  9. Mysql存储过程老是报错_mysql中看看这个存储过程老是报错,该如何处理
  10. 从码农到架构师,如何成长为技术领导者?
  11. Java线程池 面试考点
  12. Java对接百度翻译API
  13. 将Sublime打造成超强前端IDE
  14. TTL 电路 COMS 电路 区别
  15. [生存志] 第57节 孔子微言春秋大义
  16. 【juns项目】信用卡数据项目2-1:需求和效果展示
  17. MySQL 性能优化参数分析
  18. FLStudio水果最新版本V21支持中文语言
  19. 诺基亚牌WP7手机——蛮期待的
  20. 泛泰长短信修改教程(供其他泛泰机型参考)

热门文章

  1. 从技术上解读大数据的应用现状和开源未来
  2. 阿里商业白皮书:每个企业都要变成一个数据公司
  3. 思略特报告解读:智能制造企业如何实现数字化?
  4. 《浪潮之巅》作者吴军最新演讲:超级人工智能
  5. 腾讯云年度最强技术大会召开在即,这次只谈技术和代码
  6. CSDN 插件限时内测,新用户抢永久免费去广告特权!
  7. 腾讯发布AR导航,“生态+技术”驱动下一代智能座舱体验跃迁
  8. Eureka VS Zookeeper
  9. 第二十章:异步和文件I/O.(十一)
  10. j2ee关于响应头的传输猜想