폴더 내 파일명 추출하여 readme 파일 만들기

thgus·2023년 6월 30일
0

javascript

목록 보기
3/3
  1. 아래 코드를 추출할 폴더 내의 js 파일로 만든다.
  2. 명령프롬프트에서 추출할 폴더 경로로 이동
  3. node <파일명>.js 로 실행

폴더명만 추출

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

function generateFileTree(filePath, depth) {
  const stats = fs.statSync(filePath);

  if (
    !stats.isDirectory() ||
    path.basename(filePath).startsWith(".") ||
    path.basename(filePath) === "node_modules"
  ) {
    return "";
  }

  const folderName = path.basename(filePath);
  const prefix = depth === 0 ? "|--" : "--".repeat(depth) + "|--";

  let fileTree = `${prefix}${folderName}\n`;

  fs.readdirSync(filePath)
    .map((file) => path.join(filePath, file))
    .filter((file) => fs.statSync(file).isDirectory())
    .sort()
    .forEach((file) => {
      fileTree += generateFileTree(file, depth + 1);
    });

  return fileTree;
}

const directory = path.dirname(__filename);
const fileTree = generateFileTree(directory, 0);

fs.writeFile("readme.md", fileTree, (err) => {
  if (err) {
    console.error("Error writing file:", err);
  } else {
    console.log("File created: readme.md");
  }
});

파일명까지 추출

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

function generateFileTree(filePath, depth) {
  const stats = fs.statSync(filePath);
  if (stats.isDirectory()) {
    const files = fs.readdirSync(filePath).sort(); // 파일 및 폴더 정렬
    let fileTree = "";
    files.forEach((file) => {
      const fileIndexPath = path.join(filePath, file);
      const isDirectory = fs.statSync(fileIndexPath).isDirectory();
      const prefix = isDirectory ? "| - " : "|   ";
      fileTree += `${"|   ".repeat(depth)}${prefix}${file}\n`;
      if (isDirectory) {
        fileTree += generateFileTree(fileIndexPath, depth + 1);
      }
    });
    return fileTree;
  }
  return ""; // 불필요한 return 문 제거
}

const directory = path.dirname(__filename);
const fileTree = `${path.basename(directory)}\n${generateFileTree(
  directory,
  0
)}`;

// Replace multiple occurrences of '|   ' with '|-- '
const formattedFileTree = fileTree.replace(/(\|   )+/g, (match) =>
  match.replace(/\|   /g, "|-- ")
);

fs.writeFile("readme.md", formattedFileTree, (err) => {
  if (err) {
    console.error("Error writing file:", err);
  } else {
    console.log("File created: readme.md");
  }
});


결과

css
| - button
|-- |-- button.css
|-- common.css
| - form
|-- |-- form.css
|-- generate-css-readme.js
|-- layouts.css
| - pages
|-- reset.css
|-- root.css
| - text
|-- |-- text.css

profile
어쩌다보니IT

0개의 댓글