读取某个文件夹下的所有文件路径

/**
 * fileDisplay(url, callback)
 * @param url: 即将读取的文件夹路径
 * @param callback: 回调函数
 */

const fs = require('fs');
const path = require('path');
const args = require('minimist')(process.argv.slice(2));
const arr = [];
let timer = null;
const fileDisplay = (url, cb) => {
  const filePath = path.resolve(url);
  //根据文件路径读取文件,返回文件列表
  fs.readdir(filePath, (err, files) => {
    if (err) return console.error('Error:(spec)', err);
    files.forEach(filename => {
      //获取当前文件的绝对路径
      const filedir = path.join(filePath, filename);
      // fs.stat(path)执行后,会将stats类的实例返回给其回调函数。
      fs.stat(filedir, (eror, stats) => {
        if (eror) return console.error('Error:(spec)', err);
        // 是否是文件
        const isFile = stats.isFile();
        // 是否是文件夹
        const isDir = stats.isDirectory();
        if (isFile) {
          // 处理了多余的绝对路径
          arr.push(filedir.replace(path.resolve(__dirname, '../'), '').replace(/\\/gim, '/'));
          if (timer) clearTimeout(timer);
          timer = setTimeout(() => cb && cb(arr), 200);
        }
        // 如果是文件夹 且排除依赖包
        if (isDir && !('node_modules' === filename)) fileDisplay(filedir, cb);
      });
    });
  });
};
fileDisplay(path.resolve(__dirname, `../webapp/${args.name}`), arr => {
  fs.writeFileSync(path.resolve(__dirname, './commitApps.txt'), JSON.stringify(arr));
  fs.writeFileSync(path.resolve(__dirname, './sorceprojectName.txt'), args.name);
});

fs.readdir(path.resolve(__dirname, `../webapp`), (err, files) => {
  if (err) return console.error('Error:(spec)', err);
  fs.writeFileSync(path.resolve(__dirname, './nameDisablelist.txt'), JSON.stringify(files));
});

js 脚本   可以npm 执行script 

posted @ 2022-10-19 10:55  小魏code  阅读(223)  评论(0编辑  收藏  举报