nodemon - monitor file change and execute command

项目开发过程中,有时需要监控指定目录的文件变化情况,如果发生变化,则执行指定代码。如 Maven 项目中,src/test/java目录中的测试用例代码更新之后,需要自动执行编译命令:mvn test-compile

网上查了一下,比较方便的一个工具是基于nodenodemon

安装 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

References

  1. How to execute a command whenever a file changes
  2. nodemon - For use during development of a node.js based application