使用fswatch工具进行golang的热编译
这个是做什么用的?fswatch是一个工具,通过检测文件的变化,并触发指定的命令 为什么需要fswatch写完代码最重要的事情之一,就是检测一下写好的代码是不是能够工作. 要早提前做的话,收效越好,发现的问题越多. 但是如果每次都需要make test,每次都去编译或者测试的话,还是挺烦人的. 所以如果能有一个自动化的工具去做的话,那将是件很爽的事情. 最近我在忙一个项目,经常性的需要,停下来,编译一下代码,看看能不能work. 真是烦死人了. 于是我就写了fswatch这个工具,但是这种东西,在我写第一版的时候写的不太好,易用性太差,可悲的是我却不知怎么去改进. 有人14个人star过我的这个小项目,但我总感觉对不起他们. 真恨不得某一天删掉这么一坨shit的代码. 事情在某一天终于有了转机,周末我研究了下sublime text2. 我过去只是听说它但没有真正的用过. sublime text2 有很多的配置文件(json格式的),你只需要配置好,就可以万事大吉了. 把配置拷贝到其他电脑上,也能很好的work. 看来配置文件真是个好东西啊. 曾有人fork了我的那个fswatch工具,把fswatch改成一个配置文件的方式,但是改的很简单,当时我没有在意. 但现在看来,配置文件的方式真的很nice,你只需要在项目下建立一个 于是边想边做,想通的当天晚上就将原来代码中将近80%的垃圾代码清理了,只留下20%的核心,然后加上了配置文件生成和加载的代码,将原来重启程序时的kill改成的group kill. 很不幸的是 目前group-kill只能在mac和linux上跑的很好,我暂时也没想到神马好的办法,能让他在win上也ok运行. (2016年win也支持了) 目前拿这个fswatch替代bee,实时的去编译运行c,cpp,java,golang等等,应该都不是问题. 但是和bee比有什么优势呢? 既然大神问了,我就列举下:
上手使用配置文件比较长,但是可以用fswatch自动去生成. 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: true cmd: go test -v delay: 100ms signal: "KILL" watch_paths: - . watch_depth: 5
- pattens: - '**/*.go' - '!**/test_*.go' 这个样子就可以了. 配置也可以简单一些,python的可以把配置文件写成 desc: Auto generated by fswatch [fswatch] triggers: - pattens: - '**/*.py' cmd: python main.py signal: "KILL" golang的可以写成 desc: Auto generated by fswatch [fswatch] triggers: - pattens: - '**/*.py' shell: true cmd: go build && ./app signal: "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/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |