NodeJs正則關鍵字查詢目錄檔案
阿新 • • 發佈:2020-10-20
需求
關鍵字搜尋專案輸出相關方法
技術點
NodeJs遍歷目錄,讀取檔案,正則關鍵字匹配
程式碼地址
giithub專案長期迭代
/** * 使用nodeJs遍歷目錄檔案,正則匹配關鍵字搜尋console.log列印輸出 */ var path = require("path"); var fs = require("fs"); // 目錄 var filePaths = ["/Users/xupan/smartX/grampus-wxapp/page/", "/Users/xupan/smartX/grampus-wxapp/pages/", "/Users/xupan/smartX/grampus-wxapp/utils/services/"] // var filePaths = ["/Users/xupan/smartX/grampus-wxapp/utils/services/userinfo.js"] console.log("開始.........") filePaths.forEach(function (filePath) { recursiveReadFile(filePath); }) function recursiveReadFile(fileName) { if (!fs.existsSync(fileName)) return; if (isFile(fileName)) { check(fileName); } if (isDirectory(fileName)) { var files = fs.readdirSync(fileName); files.forEach(function (val) { // 不斷拼接直到找到檔案 var temp = path.join(fileName, val); if (isDirectory(temp)) recursiveReadFile(temp); if (isFile(temp)) check(temp); }) } } function check(fileName) { var data = readFile(fileName); // var regExp = /(?=getRequestUrl)\(('\w+')\)/g // var regExp = /getRequestUrl\((('|")\w+('|"))\)/g // 匹配getRequestApiUrl("xxxx") 或者 getRequestApiUrl('xxxx') var regExp = /getRequestApiUrl\((('|")\w+('|"))\)/g var res = data.match(regExp) if (res && res.length) { // console.log(111111, res.length) // console.log(fileName, "\n"+res.join("\n")); // 跨行列印輸出 join拼接比迴圈更簡潔 console.log("\n" + res.join("\n")); } } function isDirectory(fileName) { if (fs.existsSync(fileName)) return fs.statSync(fileName).isDirectory(); } function isFile(fileName) { if (fs.existsSync(fileName)) return fs.statSync(fileName).isFile(); } function readFile(fileName) { if (fs.existsSync(fileName)) return fs.readFileSync(fileName, "utf-8"); }