프로젝트를 유지보수하다 보면 더 이상 사용하지 않는 패키지를 제거해야 하는 상황이 자주 발생한다. 특히 타입 패키지(@types/*)는 테스트 과정에서 잠깐 설치했다가 제거해야 하는 경우가 많다. 이 글에서는 패키지 제거 과정과, 제거가 제대로 되었는지 확인하는 방법을 정리했다.
1. 패키지 제거
npm uninstall @types/react-native
- node_modules에서 패키지 제거
- package.json에서 dependency 항목 제거
- package-lock.json 갱신
2. 실제로 제거되었는지 확인
npm ls @types/react-native
결과:
- 아무것도 출력되지 않으면 -> 정상적으로 제거된 상태
- 여전히 출력된다면 -> 다른 패키지가 간접적으로 의존하고 있는 경우 (transitive dependency), 즉 직접 설치한 것은 아니지만 dependency tree 안에 남아 있는 상태일 가능성이 높다.
3. package.json도 확인해야 하는 이유
가끔 uninstall을 했는데도 package.json에 여전히 남아 있다가 npm install 시 다시 설치되는 경우가 있다.
그러니 다음 위치들을 확인해주는게 좋다:
- 루트 package.json
- workspace 패키지 (apps, packages 등)
- monorepo 내부 개별 프로젝트
특히 Nx나 monorepo 환경에서는 여러 package.json에 동시에 존재할 수 있다.
4. node_modules를 삭제할 필요는 없다
패키지 하나 제거할 때는 보통 필요 없다. npm uninstall이 이미 필요한 정리 작업을 해주기 때문이다. 단순 제거 작업에서는 필요 없는 경우가 대부분이다.
node_modules 삭제가 필요한 경우:
- dependency tree가 깨졌을 때
- lockfile 충돌
- peerDependency 문제
- 설치 오류 반복 발생
5. lockfile을 더 깔끔하게 정리하려면
패키지를 제거한 뒤 dependency tree를 정리하고 싶다면 다음 커맨드를 사용할 수 있다.
npm dedupe
- 중복 dependency 정리
- hoisting 최적화
- dependency tree 정리
- lockfile 구조 정리
특히 유용한 상황:
- 타입 패키지를 여러 번 설치/삭제한 경우
- peerDependency 충돌이 있었던 경우
- monorepo에서 dependency 구조가 복잡한 경우
사용 예시
npm uninstall @types/react-native
npm ls @types/react-native
npm dedupe
그리고 필요하면 package.json을 확인하자.
정리
패키지 제거하기:
- npm uninstall로 패키지를 제거한다
- npm ls로 실제 dependency tree에서 제거되었는지 확인한다. 남아 있다면 간접 의존성일 가능성이 높다
- monorepo 환경에서는 여러 package.json을 확인해야 한다
- dependency tree를 정리하려면 npm dedupe를 사용할 수 있다
특히 타입 패키지(@types/*)는 테스트나 실험 중 자주 추가/삭제되기 때문에, 제거 확인 과정을 습관화하는 것이 좋다.
'Dev & Study' 카테고리의 다른 글
| [javascript] Epoch time이란, 현재 Epoch time 얻는 법 (0) | 2026.03.03 |
|---|---|
| [Next.js] App Router에서 "use client"란 (0) | 2026.03.03 |
| [git] merge 되돌리는 방법 (0) | 2026.03.03 |
| [npm] peerDependency strictness란 (0) | 2026.03.03 |
| [git] stash: 브랜치 이동 시, 하던 작업을 잠시 치워두는 법 (0) | 2026.03.02 |