<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          fileboy文件變更監(jiān)聽通知系統(tǒng)

          聯(lián)合創(chuàng)作 · 2023-09-27 04:40

          fileboy 是一個文件變更監(jiān)聽通知系統(tǒng),使用 Go 編寫。

          適用于 Hot Reload (典型的如開發(fā)go項目,無需每次手動執(zhí)行 go build;又比如前端 node 打包) 或者 系統(tǒng)監(jiān)控的場景。

          特性

          • 極簡的用法和配置
          • 支持多平臺,Windows/Linux/MacOS
          • 支持自定義文件監(jiān)聽范圍,監(jiān)聽指定文件夾/不監(jiān)聽指定文件夾/指定后綴文件
          • 支持自定義監(jiān)控事件(write/rename/remove/create/chmod)
          • 支持設(shè)置多條命令
          • 命令支持變量占位符
          • 支持冗余任務(wù)丟棄,自定義冗余任務(wù)范圍
          • 支持 http 通知
          • 更多...

          編譯環(huán)境

          go version 1.13

          更新日志

          CHANGELOG

          運行

          下載二進(jìn)制文件

          Github: download v1.12
          Gitee: dowmload v1.12

          下載已經(jīng)編譯好的對應(yīng)平臺二進(jìn)制文件,重命名為fileboy, 加入系統(tǒng) Path 中即可。

          源碼編譯

          clone 該項目,進(jìn)入主目錄,運行命令:

          ## 安裝依賴
          go get -u gopkg.in/fsnotify/fsnotify.v1
          go get -u gopkg.in/yaml.v2
          ## 編譯
          go build
          ## 運行
          ./fileboy

          使用

          fileboy 的正常運行依賴于 filegirl.yaml 配置文件,因此首次在項目中使用需要初始化 filegirl.yaml。

          • 進(jìn)入你想要 hot reload 的項目主目錄下;
          • 運行 fileboy init,會在該目錄下生成 filegirl.yaml文件;
          • 查看 filegirl.yaml,修改為適合自己項目的配置項;
          • 運行 fileboy即可.

          如果你定義了 command -> exec命令,想事先確認(rèn)是否能正常執(zhí)行,可以運行 fileboy exec命令,系統(tǒng)會嘗試運行你的自定義命令。
          你可以使用 fileboy help查看使用幫助。

          filegirl.yaml 配置文件說明

          # 主配置
          core:
              # 配置版本號
              version: 1
          
          # 監(jiān)控配置
          monitor:
              # 要監(jiān)聽的目錄
              # test1       監(jiān)聽當(dāng)前目錄下 test1 目錄
              # test1/test2 監(jiān)聽當(dāng)前目錄下 test1/test2 目錄
              # test1,*     監(jiān)聽當(dāng)前目錄下 test1 目錄及其所有子目錄(遞歸)
              # .,*         監(jiān)聽當(dāng)前目錄及其所有子目錄(遞歸)
              includeDirs:
                  - .,*
          
              # 不監(jiān)聽的目錄
              # .idea   忽略.idea目錄及其所有子目錄的監(jiān)聽
              exceptDirs:
                  - .idea
                  - .git
                  - .vscode
                  - node_modules
                  - vendor
          
              # 監(jiān)聽文件的格式,此類文件更改會執(zhí)行 command 中的命令
              # .go   后綴為 .go 的文件更改,會執(zhí)行 command 中的命令
              # .*    所有的文件更改都會執(zhí)行 command 中的命令
              types:
                  - .go
          
              # 監(jiān)聽的事件類型,發(fā)生此類事件才執(zhí)行 command 中的命令
              # 沒有該配置默認(rèn)監(jiān)聽所有事件
              # write   寫入文件事件
              # rename  重命名文件事件
              # remove  移除文件事件
              # create  創(chuàng)建文件事件
              # chmod   更新文件權(quán)限事件(類unix)
              events:
                  - write
                  - rename
                  - remove
                  - create
                  - chmod
          
          # 命令
          command:
              # 監(jiān)聽的文件有更改會執(zhí)行的命令
              # 可以有多條命令,會依次執(zhí)行
              # 如有多條命令,每條命令都會等待上一條命令執(zhí)行完畢后才會執(zhí)行
              # 如遇交互式命令,允許外部獲取輸入
              # 支持變量占位符,運行命令時會替換成實際值:
              #    {{file}}    文件名(如 a.txt 、test/test2/a.go)
              #    {{ext}}     文件后綴(如 .go)
              #    {{event}}   事件(上面的events, 如 write)
              #    {{changed}} 文件更新的本地時間戳(納秒,如 1537326690523046400)
              # 變量占位符使用示例:cp {{file}} /root/sync -rf  、 myCommand --{{ext}} {{changed}}
              exec:
                  - go version
                  - go env
          
              # 文件變更后命令在xx毫秒后才會執(zhí)行,單位為毫秒
              # 一個變更事件(A)如果在定義的延遲時間(t)內(nèi),又有新的文件變更事件(B),那么A會取消執(zhí)行。
              # B及以后的事件均依次類推,直到事件Z在t內(nèi)沒有新事件產(chǎn)生,Z 會執(zhí)行
              # 合理設(shè)置延遲時間,將有效減少冗余和重復(fù)任務(wù)的執(zhí)行
              # 如果不需要該特性,設(shè)置為 0
              delayMillSecond: 2000
          
          # 通知器
          notifier:
              # 文件更改會向該 url 發(fā)送請求(POST 一段 json 文本數(shù)據(jù))
              # 觸發(fā)請求的時機(jī)和執(zhí)行 command 命令是一致的
              # 請求超時 15 秒
              # POST 格式:
              #    Content-Type: application/json;charset=UTF-8
              #    User-Agent: FileBoy Net Notifier v1.12
              #    Body: {"project_folder":"/project/path","file":"main.go","changed":1576567861913824940,"ext":".go","event":"write"}
              # 例: http://example.com/notifier/fileboy-listener
              # 不啟用通知,請留空 ""
              callUrl: ""

          TODO

          •  命令支持變量占位符
          •  支持多命令
          •  支持監(jiān)聽指定文件夾
          •  支持不監(jiān)聽指定文件夾
          •  支持監(jiān)聽指定后綴文件
          •  支持自定事件監(jiān)聽
          •  支持 http 通知
          •  支持冗余任務(wù)丟棄
          •  支持 http 合并任務(wù)的通知
          瀏覽 15
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一区二区三区免费播放 | 天天日天天操心 | 不卡视频免费在线播放 | 九九九视频完整版 | 伊人五月在线 |