welcome to sisi's space! ‎ε(*⌒▽⌒)੭*゚¨゚゚・*:..☆

Dev & Study

[npm] npm uninstall, 패키지 제거 방법

Sisi_ 2026. 3. 3. 01:35

프로젝트를 유지보수하다 보면 더 이상 사용하지 않는 패키지를 제거해야 하는 상황이 자주 발생한다. 특히 타입 패키지(@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/*)는 테스트나 실험 중 자주 추가/삭제되기 때문에, 제거 확인 과정을 습관화하는 것이 좋다.