File Watcher 用于监控文件或目录的变化,并在检测到变化时触发指定命令。适合“文件变化后自动构建”“监控目录新文件”“文件创建时执行脚本”“同时监控多个文件”等场景。若只需一次性检查文件,应使用 test/read 命令;定时监控应使用 cron;需要持久日志则应使用专门的监控工具。
主要能力:支持监控单个文件、多个文件、文件列表文件以及整个目录;可指定文件匹配模式(--pattern,默认 *);可选择事件类型(--events,支持 create、modify、delete,默认全部);目录默认递归(--recursive,可用 --no-recursive 关闭);支持防抖(--debounce 秒数、--debounce-file 按文件独立计时);支持后台运行(--daemon)与 PID 文件(--pidfile);支持超时停止(--timeout)、静默(--quiet)和详细输出(--verbose)。命令执行时可通过环境变量 $FILE 和 $EVENT 获取触发文件与事件。
使用方式示例: {baseDir}/watch.sh ./src --command "npm run build" {baseDir}/watch.sh --file config.json --command "echo 'Config changed'" {baseDir}/watch.sh --files "file1.txt,file2.txt" --command "echo 'Changed'" {baseDir}/watch.sh ./src --command "make" --events create,modify,delete {baseDir}/watch.sh ./src --command "make" --daemon --pidfile /tmp/watcher.pid {baseDir}/watch.sh ./src --command "npm run build" --debounce 2
输出格式为带时间戳的事件行,也可通过 --json 输出 JSON。
限制与依赖:Linux 依赖 inotifywait(inotify-tools 包),macOS 依赖 fswatch(brew install fswatch);无原生支持时回退到 1 秒间隔的轮询。可通过 SIGTERM 或 SIGINT 干净退出。资料未提供收费、价格、平台支持范围等更多信息。