LogoSEO Jing
  • All Posts
  • SEO Jing
  • KD Team
  • CLab CoreTeam
  • Study

Contact Me

© 2026 SEOJing. All rights reserved.

DevLogSEO JingInsight

결국 Node.js 까지 와버렸다

2026년 3월 14일·4분 읽기

왜 Node.js?

MDX 파일 구조를 JSON 객체로 바꾸기 위해선 Node.js의 fs가 필요하다고 해서 Node.js를 짤막하게 배워볼려고 한다.


Node.js란?

JavaScript를 브라우저 밖에서 실행할 수 있게 해주는 런타임 환경

이다. 원래 JavaScript는 브라우저 안에서만 동작했는데, Node.js가 등장하면서 서버, CLI 도구, 스크립트 등을 JavaScript로 작성할 수 있게 되었다.

브라우저 JavaScript → DOM 조작, 화면 렌더링
Node.js JavaScript → 파일 읽기/쓰기, 서버 실행, OS 접근

모듈 시스템

ts
// CommonJS (옛날 방식)
const fs = require("fs");

// ES Modules (현재 방식 - 이 프로젝트에서 사용)
import fs from "fs";

내장 모듈

모듈역할
fs파일 시스템 (읽기/쓰기)
path파일 경로 처리
os운영체제 정보
httpHTTP 서버/클라이언트

fs 모듈

fs는 File System의 약자로, 파일과 디렉토리를 다루는 모듈이다.

ts
import fs from "fs";

// 파일 읽기
const content = fs.readFileSync("파일.txt", "utf-8");

// 파일 쓰기
fs.writeFileSync("파일.txt", "내용");

// 파일 존재 확인
fs.existsSync("파일.txt"); // true 또는 false

// 디렉토리 내 파일 목록
fs.readdirSync("./폴더"); // ['a.txt', 'b.txt']

// 파일/폴더 정보
const stat = fs.statSync("./폴더");
stat.isDirectory(); // 폴더인지 확인

Sync vs Async

ts
// 동기 (Sync) - 완료될 때까지 기다림
const data = fs.readFileSync("파일.txt", "utf-8");
console.log(data); // 바로 사용 가능

// 비동기 (Async) - 기다리지 않고 다음 줄 실행
fs.readFile("파일.txt", "utf-8", (err, data) => {
  console.log(data); // 콜백에서 사용
});

// 비동기 + Promise (현대적 방식)
import fs from "fs/promises";
const data = await fs.readFile("파일.txt", "utf-8");

프로젝트에서의 사용

generate-content-tree.ts 파일에서 fs가 쓰이는 부분:
ts
fs.existsSync(CONTENT_DIR)                      // content 폴더가 있는지 확인
fs.existsSync(outputDir)                         // 출력 폴더가 있는지 확인
fs.mkdirSync(outputDir, { recursive: true })     // 폴더 생성 (중간 경로 포함)
fs.writeFileSync(OUTPUT_PATH, ...)               // JSON 파일 쓰기
흐름을 요약하면:
  1. content 폴더 존재 확인 (없으면 에러)
  2. content 폴더를 스캔해서 트리 구조 생성
  3. 출력 폴더가 없으면 생성
  4. 트리를 JSON 파일로 저장

포스트 목록

/SEOJing/devLog/insight
파일 10개, 폴더 0개
엄청난 피드백생각보다 어려웠던 댓글, 완독 로컬스토리지디자인 시스템을 구축할 때 주의할 점폰트는 왜 메인 페이지에서만 적용이 안되고 있었을까?MDX DOM 트리 파싱하기MDX 관련 이슈 노트결국 Node.js 까지 와버렸다전체적인 플로우Storybook으로 디자인 시스템 테스팅하기MDX가 뭘까?
stat.isFile(); // 파일인지 확인