1、用node语法实现一个插件,可以读文件夹里所有的文件,并修改文件。
分析:
“所有”肯定要递归
“读”和“写”肯定用node的fs模块

贴代码分析:

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

let readFile = (filePath = "./dist") => {
  // 读取文件夹
  fs.readdir(filePath, (err, files) => {
    if (err) {
      console.log("不存在目录");
    }
    console.log("files", files);

    files.forEach((file) => {
      let fileDir = path.join(filePath, file)
      console.log('fileDir', fileDir)
      fs.stat(fileDir, (err, status) => {
         if (err) {
           console.warn('获取文件stats失败');
           return
         }
         // 判断是否是文件
         let isFile = status.isFile();
         // 判断是否是文件夹
         let isDir = status.isDirectory();
         if (isFile) {
            // 读取文件
            let content = fs.readFileSync(fileDir, 'utf-8')
            if (content.match(/<!-- built files will be auto injected -->/)) {
              let str = '<!-- built files will be auto injected -->\n<script src="a.js"></script>\n<script src="b.js"></script>'
              let data = content.replace('<!-- built files will be auto injected -->', str)
              console.log('data', data)
              // 写入文件
              fs.writeFile(fileDir, data, 'utf-8', (err) => {
                // 第二个参数 是被插入的内容
                if (err) {
                  throw err;
                }
              })
            }
         }
         if (isDir) {
             console.log('----文件---')
             // 如果文件里还是文件,则递归调用函数
             readFile(fileDir)
         }
      })
    });
  });
};

readFile();

总结:
所用fs模块,api有

readdir、stat、readFileSync、writeFile

健儿
79 声望4 粉丝

掌握好原生js。