项目开发过程中,有时需要监控指定目录的文件变化情况,如果发生变化,则执行指定代码。如 Maven 项目中,src/test/java目录中的测试用例代码更新之后,需要自动执行编译命令:mvn test-compile。
网上查了一下,比较方便的一个工具是基于node的nodemon。
安装 nodemon
npm install nodemon -g+ nodemon@1.17.3updated 3 packages in 6.45s |
nodemon 使用示例
nodemon -d 2 -e java --watch src/test/java --exec "mvn -B -Dmaven.test.skip=false test-compile"[nodemon] 1.17.3[nodemon] to restart at any time, enter `rs`[nodemon] watching: src/test/java/**/*[nodemon] starting `mvn -B -Dmaven.test.skip=false test-compile`[INFO] Scanning for projects...[INFO][INFO] ------------------------------------------------------------------------[INFO] Building language-java 0.3.1-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO][INFO] --- maven-compiler-plugin:3.7.0:testCompile (default-testCompile) @ language-java ---[INFO] Changes detected - recompiling the module![INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 3.963 s[INFO] Finished at: 2018-04-06T15:29:13+08:00[INFO] Final Memory: 20M/286M[INFO] ------------------------------------------------------------------------[nodemon] clean exit - waiting for changes before restart |
参数说明
--watch指定监控目录和文件名,可以指定多个位置:
nodemon --watch app --watch libs app/server.js |
指定忽略的目录和文件:
nodemon --ignore lib/ --ignore tests/ |
指定命令延时,避免文件频繁保存时,造成监控命令触发次数太多:
nodemon --delay 10 server.js |
指定文件和目录发生变化时,需要运行的命令:
nodemon --exec "python -v" ./app.py |
指定监控文件的后缀名:
nodemon -e js,java |