- 传入指定的文件夹的路径。利用fs的读取文件能力,递归进行读取。
const path = require("path"),
fs = require("fs");
const list = [];
// 遍历读到某个目录下所有文件名
function listFile(dir){
var arr = fs.readdirSync(dir);
arr.forEach(function(item){
var fullpath = path.join(dir,item);
var stats = fs.statSync(fullpath);
if(stats.isDirectory()){
listFile(fullpath);
}else{
list.push(fullpath);
}
});
return list;
}
var res = listFile(`F:/1-工作文件/1-前端资料/vue2-test/big-screen-main/src`);
可以看到全部目录都读取下来了
- 只保留是vue结尾的文件,然后读取文件的内容,从内容中提取满足要求的关键字
const resultSet = new Set(); // 得到后缀为vue的资源 const suffixIsVueFile = res.filter(name => getSuffixName(name) === "vue") suffixIsVueFile.forEach(name => { // 同步读取文件的内容 const context = fs.readFileSync(name, "utf-8"); // 从内容中提取是el-xxx的字符串 const result = findResultByString(context) || []; result.forEach(i => { resultSet.add(i.replace("<", "")); }) }) // 获取el-xxx的全部标签从一个字符串中 function findResultByString(str) { return str.match(/<el-\w*/g) } // 得到后缀 function getSuffixName (str) { const list = str.split("."); return list[list.length - 1] }
得到结果