프로그래밍/NodeJS

Node.js 프로젝트에서 모듈 정리와 최적화하는 방법

smartbay 2025. 7. 12. 08:29

Node.js 프로젝트에서 모듈 정리와 최적화하는 방법

개발 중 필요한 모듈을 그때그때 설치하다 보면 어느 순간부터 프로젝트에 어떤 모듈이 포함되어 있는지, 실제로 어떤 모듈이 사용되고 있는지 헷갈리기 시작합니다. 특히 Node.js는 다양한 외부 패키지를 기반으로 빠르게 개발할 수 있는 환경이기 때문에, 모듈 관리를 체계적으로 하지 않으면 의존성 충돌, 프로젝트 용량 증가, 보안 취약점 등의 문제가 발생할 수 있습니다.

이 글에서는 Node.js 프로젝트에서 사용 중인 모듈을 확인하고, 불필요한 모듈을 식별 및 제거하여 프로젝트를 최적화하는 과정을 소개합니다. 실제 사용한 도구들과 명령어, 실무에서 발생한 케이스들을 중심으로 설명하고 있습니다.

1. 설치된 모듈 확인: package.json과 npm list

Node.js 프로젝트의 모든 외부 모듈은 루트 디렉터리의 package.json에 기록됩니다. 이 파일은 프로젝트의 핵심 정보를 담고 있으며, 두 가지 주요 섹션으로 나뉩니다:

  • dependencies: 앱 실행 시 필요한 모듈 (예: express, mongoose)
  • devDependencies: 테스트, 빌드 등 개발 중 사용하는 모듈 (예: nodemon, jest)

또한 터미널에서 다음 명령어를 사용하면 현재 설치된 모듈을 트리 구조로 확인할 수 있습니다:

npm list --depth=0

depth 값을 늘리면 하위 의존성까지 확인 가능하지만, 기본적으로 최상위 모듈만 보는 것이 모듈 정리에 효과적입니다.

2. 실제 사용 중인 모듈 확인: 소스 코드 분석

단순히 설치된 모듈 리스트만으로는 어떤 모듈이 실제로 사용되고 있는지를 확인하기 어렵습니다. 이를 위해서는 코드 레벨에서 require() 또는 import 구문을 검색하여 사용 여부를 파악해야 합니다.

가장 기본적인 방법은 grep 명령어입니다:

grep -r "require('fuse.js')" ./src

ES6 문법을 사용하는 경우에는 다음 명령어도 함께 사용합니다:

grep -r "from 'fuse.js'" ./src

단, 위 명령은 package.json이나 package-lock.json에서 의존성 명시된 부분에도 걸릴 수 있으므로, 검색 시 제외 옵션을 추가하는 것이 좋습니다:

grep -r "fuse.js" . --exclude="package.json" --exclude="package-lock.json"

3. depcheck를 활용한 정적 분석

depcheck는 Node.js 프로젝트에서 사용하지 않는 모듈을 자동으로 분석하는 도구입니다. 설치는 다음과 같이 진행합니다:

npm install -g depcheck

사용 방법은 루트 디렉터리에서 간단하게 실행만 하면 됩니다:

depcheck

결과는 다음과 같은 형태로 출력되며, Unused dependencies 항목이 삭제 대상입니다:

Unused dependencies
* lodash
* moment
* fuse.js

또한 Missing dependencies 항목을 통해 코드에서는 사용했지만 package.json에 누락된 모듈도 확인할 수 있습니다. 이는 배포 환경에서 오류의 원인이 될 수 있기 때문에 반드시 확인해야 합니다.

단, depcheck는 동적 로딩(require()가 조건문이나 함수 내에 위치한 경우) 또는 Webpack, Babel 같은 빌드 도구에서 간접적으로 사용하는 모듈을 감지하지 못할 수 있어 검토 과정이 필요합니다.

4. 모듈 삭제 및 안전한 처리 방법

depcheck나 코드 검색을 통해 사용하지 않는 모듈이 명확해졌다면 다음 명령어로 삭제할 수 있습니다:

npm uninstall lodash moment fuse.js

삭제 후 애플리케이션을 다시 실행하여 에러 메시지가 발생하는지 확인합니다. 만약 “Cannot find module”과 같은 메시지가 뜨면 해당 모듈은 실제로 사용 중이었으며, 그때 다시 설치하면 됩니다:

npm install lodash

이러한 방식은 시행착오 기반이지만 실전에서 가장 안전하고 실용적인 방법입니다. 특히 개발 중 잦은 모듈 추가로 인해 불필요한 의존성이 쌓인 경우 효과적으로 정리할 수 있습니다.

5. CI 도구와 연계한 모듈 관리

팀 프로젝트나 규모가 큰 서비스에서는 정기적으로 모듈을 분석하고 정리하는 작업이 필요합니다. 이를 위해 CI/CD 파이프라인에 depcheck를 포함시키면, 커밋 혹은 배포 전에 사용하지 않는 모듈을 탐지해 오류 발생 가능성을 줄일 수 있습니다.

또한, 패키지 정리를 위한 스크립트를 자동화하여 모듈 삭제 후 애플리케이션 테스트까지 연계하면 정리 작업의 정확도와 효율성을 높일 수 있습니다.

6. 모듈 관리 습관이 주는 개발 효율성

모듈 정리를 통해 얻을 수 있는 효과는 다음과 같습니다:

  • 프로젝트 디스크 용량 감소
  • 보안 취약점 방지 (사용하지 않는 모듈의 업데이트 누락)
  • 의존성 충돌 가능성 감소
  • 팀원 간 코드 이해도 향상

주기적인 모듈 관리 습관은 프로젝트 유지보수를 더 원활하게 만들며, 특히 장기 운영되는 애플리케이션의 경우 그 가치가 더욱 커집니다.

7. 마무리하며

Node.js는 빠르고 유연한 개발이 가능한 만큼, 모듈 관리도 그만큼 신경 써야 합니다. depcheck와 grep 같은 도구를 활용하면 불필요한 모듈을 식별하고, 직접 소스 코드를 분석하면서 실제 사용 여부를 파악할 수 있습니다.

완전히 자동화된 해결책은 없지만, 시행착오를 통해 프로젝트를 정리하면서 생긴 경험은 개발 실력의 밑거름이 됩니다. 이 글을 통해 Node.js 프로젝트의 모듈 정리에 대한 체계적인 접근법을 익히고, 직접 프로젝트를 최적화해보시길 바랍니다.

이 콘텐츠는 스마트베이(SmartBay)에서 제공하며, 실무 중심의 정보 전달을 목표로 구성되었습니다. 스마트베이는 다양한 개발자 경험을 바탕으로 실용적인 IT 정보를 지속적으로 소개합니다.


스마트베이 | IT 자동화 혁신 파트너
비즈니스 효율을 높이는 스마트한 IT 솔루션을 제공합니다.

웹사이트 : www.esmartbay.co.kr
E-mail : smartbay.svc@gmail.com
카카오톡 : 바로 상담하기