node中使用代碼執行npm指令

可以結合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文檔。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章