Node 프로젝트의 gitignore 작성법

2025. 2. 11. 11:04Programming Language/Node.js

반응형

Node.js 프로젝트에서 git으로 commit 할때 제외되어야할 파일에 대한 설명을 작성한다.

아래는 gitignore를 작성할때 추가될 목록과 그 이유에 대한 설명이다.

 

1. node_modules/ (패키지 폴더)

node_modules/ 폴더에는 npm install을 통해 설치된 패키지들이 저장되기에 Git에서 관리할 필요가 없으며, 필요하면 package.json을 기반으로 언제든 다시 설치 가능하다.

node_modules/ 폴더는 수천 개의 파일로 이루어져 용량이 크므로, Git에 포함하면 리포지토리 크기가 불필요하게 커지기에 추가되지 않도록 해야한다.

node_modules/

 

2. logs/, *.log (로그 파일)

logs/ 폴더에는 서버 실행 로그, 오류 로그 등이 저장된다

로그 파일은 실행할 때마다 새로운 로그가 생성되므로 Git에서 로그 파일을 관리할 필요 없다.

logs/
*.log
npm-debug.log*
yarn-debug.log*
pnpm-debug.log*

 

3. .env (환경 변수 파일)

.env 파일에는 API 키, 데이터베이스 비밀번호, JWT 토큰, 민감한 정보가 포함되기 때문에 포함시켜선 안된다.

실수로 GitHub에 올리면 개인 정보가 유출될 위험이 있다.

.env
.env.local
.env.development
.env.production
.env.test

만약 .env 파일이 Git에 포함되었다면, 즉시 GitHub 기록에서 삭제해야 한다.

 

대신 .env.example 파일을 만들어 변수명만 제공하면 좋다.

# .env.example (Git에 포함)
DATABASE_URL=[데이터베이스 URL을 여기에 넣으세요]
JWT_SECRET=[jwt 토큰을 여기에 넣으세요]

 

4. .DS_Store, Thumbs.db (운영체제 관련 파일)

macOS에서 .DS_Store, Windows에서 Thumbs.db파일 탐색기에서 자동으로 생성되는 파일이기에 관리할 필요 없는 파일이다.

.DS_Store  # macOS
Thumbs.db  # Windows

 

5. dist/, build/, tmp/, out/ (빌드 결과물)

dist/, build/ 폴더는 Webpack, TypeScript, Babel 등의 빌드 결과물이 저장되는 폴더로 빌드 결과물은 배포 시 생성되므로 Git에서 관리할 필요없다.

또한 빌드 결과물은 개발자의 환경에 따라 다를 수 있으므로, Git에서 관리하면 불필요한 충돌이 발생할 수 있기에 포함되지 않도록 해야한다.

dist/
build/
tmp/
out/

 

 

6. .vscode/, .idea/ (IDE 설정 파일)

해당 폴더 내부에는 IDE에 대한 설정이 들어가 있고 개발자 마다 다르기에 Git에서 관리하지 않아야한다.

대신 팀에서 특정 설정이 필요하면 settings.json 파일을 공유하는 게 좋다.

.vscode/
.idea/

 

 

7. .eslintcache, nyc_output/, coverage/ (테스트 및 코드 스타일 관련)

.eslintcache ESLint 실행 시 캐시된 정보, Git에서 관리할 필요 없다.

nyc_output/nyc(코드 커버리지 도구)에서 생성한 중간 파일, Git에 포함할 필요 없다.

coverage/ Jest, Mocha 등 테스트 도구에서 생성하는 코드 커버리지 보고서, Git에 불필요하다.

해당 라이브러리를 사용하는 경우는 아래 ignore를 추가해줘야만 한다

.eslintcache
.nyc_output/
coverage/

 

 

8. TypeScript를 사용한다면 추가해야 할 항목

node.js를 사용하면 TypeScript를 많이 사용하기에 이에 대한 추가되는 항목도 추가할 부분을 적어보자.

 

.tsbuildinfoTypeScript에서 Incremental Build(증분 빌드) 기능(tsc --incremental)을 사용하면, 이전 빌드 정보를 저장하는 .tsbuildinfo 파일이 생성되는데 이 파일은 TypeScript가 다음 빌드에서 변경된 파일만 다시 컴파일할 수 있도록 도와주는 역할을 한다.

 

*.d.ts 파일은 TypeScript에서 JavaScript 라이브러리의 타입 정보를 제공하는 파일로 TypeScript가 JavaScript 라이브러리를 사용할 때 타입 정보를 모르기 때문에 이 파일을 생성하게 된다.

직접 작성하는 경우가 아니라면, 빌드 과정에서 자동 생성되므로 Git에서 관리할 필요가 없다.

 

dist/ 폴더는 TypeScript가 컴파일(tsc)을 실행하면 생성되는 최종 빌드 결과물이 저장되는 폴더로 일반적으로 TypeScript는 .ts 파일을 .js 파일로 변환하며, 변환된 결과물이 dist/에 저장된다.

해당 폴더는 npm publish 시 배포되는 코드이므로, Git에서 관리할 필요없다.

npm run build 실행 후 다시 생성 가능하기 때문에 관리하지 않게 하자.

 

# TypeScript 빌드 결과물
*.tsbuildinfo
*.d.ts
dist/

 

최종 gitignore

# 1. Node.js 패키지 폴더
node_modules/

# 2. 로그 파일
logs/
*.log
npm-debug.log*
yarn-debug.log*
pnpm-debug.log*

# 3. 환경 변수 파일
.env
.env.local
.env.development
.env.production
.env.test

# 4. 운영체제 관련 파일
.DS_Store
Thumbs.db

# 5. 빌드 결과물
dist/
build/
tmp/
out/

# 6. IDE/에디터 관련 파일
.vscode/
.idea/

# 7. 코드 스타일 및 테스트 관련 파일
.eslintcache
.nyc_output/
coverage/

# 8. TypeScript 빌드 결과물 
*.tsbuildinfo 
*.d.ts

 

만약 예를 들어 하나의 프로젝트를 Git에 올리는게 아니라 하나의 폴더 내부에 여러개의 프로젝트가 있는 형태로 Git에 커밋하는 상태라면 아래와 같이 구성해줘야 한다.

# 1. Node.js 패키지 폴더 (모든 폴더 내의 node_modules/ 무시)
**/node_modules/

# 2. 로그 파일 (모든 폴더 내의 logs/ 폴더와 로그 파일 무시)
**/logs/
**/*.log
npm-debug.log*
yarn-debug.log*
pnpm-debug.log*

# 3. 환경 변수 파일 (모든 폴더 내의 .env 파일 무시)
**/.env
**/.env.local
**/.env.development
**/.env.production
**/.env.test

# 4. 운영체제 관련 파일 (macOS, Windows 자동 생성 파일 무시)
.DS_Store
Thumbs.db

# 5. 빌드 결과물 (모든 폴더 내의 빌드 폴더 무시)
**/dist/
**/build/
**/tmp/
**/out/

# 6. IDE/에디터 관련 파일 (개인 설정 파일 무시)
**/.vscode/
**/.idea/

# 7. 코드 스타일 및 테스트 관련 파일 (캐시 및 코드 커버리지 결과 무시)
**/.eslintcache
**/nyc_output/
**/coverage/

# 8. TypeScript 빌드 결과물 (모든 폴더에서 무시)
**/*.tsbuildinfo   
**/*.d.ts

 

반응형