可以結合fs模塊的watch方法,在文件發生變更時自動執行某些編譯操作,例如執行apidoc編譯命令。把該命令編寫到package.json的scripts裏。
"scripts": {
"buildModel": "node ./helper/autoBuild/model.js",
"start": "supervisor app.js",
"apidoc": "apidoc -i router/ -o ./apidoc/",
"autoBuildApidoc": "node ./helper/autoBuild/apidoc.js"
}
然後編寫apidoc.js命令模塊
const fs = require('fs');
console.log('啓動API自動生成命令成功...');
fs.watch('./router/', {
recursive: true
}, ((event, filename) => {
console.warn(new Date(),' 檢測到文件變化,正在執行編譯命令...');
const exec = require('child_process').exec;
const cmdStr = 'npm run apidoc';
exec(cmdStr, (err, stdout, stderr) => {
if (err){
console.log(err);
console.warn(new Date(),' API文檔編譯命令執行失敗');
} else {
console.log(stdout);
console.warn(new Date(),' API文檔編譯命令執行成功');
}
});
}))
最後在命令行工具中執行npm run autoBuildApidoc就可以,讓監測目錄下的文件發生變化時,就可以自動生成apidoc文檔。