node实现组件属性一键修改

159 阅读1分钟

前两天得到个需求都给项目中所有的Form表单添加一个labelWrap属性,因为项目文件比较多,用到的Form也特别多,想着一个个处理很麻烦,还容易漏掉,于是写了node脚本,实现了集中修改

const fs = require("fs");
const path = require("path");

function search(dir) {
  let files = []; // 保存所有文件名
  let tmp = fs.readdirSync(dir); // 读取当前目录
  tmp.forEach((file) => { // 遍历当前目录
    let fullPath = path.join(dir, file); // 获取当前文件的绝对路径
    if (fs.statSync(fullPath).isDirectory()) { // 如果是文件夹 递归
      [].push.apply(files, search(fullPath));// 将递归结果合并
    } else {
      if (fullPath.match(/.*\.tsx$/)) { // 如果是ts文件
        fs.readFile(fullPath, "utf-8", (err, data) => { // 读取文件
          // 替换
          const newData = data.replace(/<Form /g, "<Form labelWrap "); // 替换
          fs.writeFile(fullPath, newData, (err) => { // 写入文件
            if (err) throw err;
          });
        });
      }
    }
  });
  return files;
}

search("../src");