fileboy v1.0 釋出,檔案變更監聽通知系統
fileboy,檔案變更監聽通知系統,使用 Go 編寫。適用於 Hot Reload (典型的如開發go專案,無需每次手動執行 go build;又比如前端 node 打包) 或者 系統監控的場景。
v1.0 更新日誌:
- 檔案變更監聽支援多平臺 (windows/linux測試,mac未測試);
- 支援靈活配置監聽 包含資料夾/排除資料夾/特定檔案型別;
- 支援配置變更要執行命令,可以有多條,會依次執行;
- 支援 fileboy init 初始化配置,生成 filegirl.yaml 檔案;
- 支援 fileboy exec 直接執行配置的 command 命令;
下載:ofollow,noindex" target="_blank">windows-amd64 | linux-amd64 | darwin-amd64
文件:Readme
使用
fileboy 的正常執行依賴於filegirl.yaml
配置,所以首次在專案中使用需要初始化 filegirl.yaml
。
-
進入你想要 hot reload 的專案主目錄下;
-
執行
fileboy init
,會在該目錄下生成filegirl.yaml
檔案; -
檢視
filegirl.yaml
,修改為適合自己專案的配置項; -
執行
fileboy
即可.如果你定義了
commend -> exec
命令,想事先確認是否能正常執行,可以執行fileboy exec
命令,系統會嘗試執行你的自定義命令。
你可以使用fileboy help
檢視使用幫助。
filegirl.yaml 配置檔案說明
# 主配置 core: # 配置版本號 version: 1 # 監控配置 monitor: # 要監聽的目錄 # test1監聽當前目錄下 test1 目錄 # test1/test2 監聽當前目錄下 test1/test2 目錄 # test1,*監聽當前目錄下 test1 目錄及其所有子目錄(遞迴) # .,*監聽當前目錄及其所有子目錄(遞迴) includeDirs: - .,* # 不監聽的目錄 # .idea忽略.idea目錄及其所有子目錄的監聽 exceptDirs: - .idea - .git - .vscode # 監聽檔案的格式,此類檔案更改會執行 commend 中的命令 # .go字尾為 .go 的檔案更改,會執行 commend 中的命令 # .*所有的檔案更改都會執行 commend 中的命令 types: - .go # 命令 command: # 監聽的檔案有更改會執行的命令 # 可以有多條命令,會依次執行 # 如有多條命令,每條命令都會等待上一條命令執行完畢後才會執行 # 如遇互動式命令,允許外部獲取輸入 exec: - go version - go env
QA
很多框架都自帶了 hot reload 的功能,為什麼還要單獨寫個 fileboy 呢?
這個是一款通用的 hot reload 的軟體,理論上適用於任何需要 hot reload 的場景,並不侷限於語言層面上。只要靈活的配置filegirl.yaml
檔案就行了。
fileboy 可以應用在那些具體的場景?
在開發中,我們很需要一款可以幫助我們自動打包編譯的工具,那 fileboy 就非常適合這樣的場景。比如 go 專案的熱編譯,讓我們可以邊修改程式碼邊執行得到反饋。又比如 PHP Swoole 框架,由於常駐程序的原因,無法更改程式碼立即reload,使用 fileboy 就可以輔助做到傳統 PHP 開發的體驗。
對於一些需要監控檔案日誌或者配置變動的場景, fileboy 同樣適合。你可以事先編寫好相應的通知報警指令碼,然後定義filegirl.yaml
中的commend
命令,交由 fileboy 自動執行監控報警。
idea 下更改檔案,為什麼會執行兩次或者多次 commend ?
由於 idea 系列軟體特殊的檔案儲存策略,他會自動建立一些臨時檔案,並且在需要時多次重寫檔案,所以有時反映在檔案上就是有多次的更改,所以會出現這種情況。這個後續會做優化.
filegirl.yaml 裡面的 commend 不支援複雜的命令嗎?
對於“很複雜的命令”這種說法很難去定義,比如echo "hello world"
並不複雜,但是對於 fileboy 來講,目前無法解析這種命令。
fileboy 目前支援命令 + 引數
這種形式的 commend,而且 引數中不能有""符號或者有空格。如:
go build
:支援;
go env
:支援;
php swoole start --daemon
:支援
cat a.txt | grep "q" | wc -l
:不支援
對於不支援的命令,可以把它寫到一個檔案裡,然後在 commend 中執行這個檔案來解決。
為什麼起名為 fileboy,又把配置名叫做 filegirl ?
因為愛情~~
聽說有彩蛋?
(◡ᴗ◡✿)