pnpm doctor

추가된 버전: v11.14.0

설치된 pnpm과 pnpm이 실행되는 환경에 대해 진단을 실행합니다.

pnpm doctor [--offline] [--benchmark] [--json]

각 검사는 발견한 문제의 해결 방법을 알려 주며, 검사 중 하나라도 실패하면 명령은 오류 종료 코드를 반환합니다. 경고는 명령을 실패시키지 않습니다.

✓ Versions: pnpm 11.14.0, Node.js 22.20.0
✓ Install method: pnpm
✓ Global bin directory: /Users/example/Library/pnpm/bin
✓ Cache directory: /Users/example/Library/Caches/pnpm
✓ Store directory: /Users/example/Library/pnpm/store/v10
✓ Filesystem: available: reflink, hardlink, symlink
✓ Registry connectivity: https://registry.npmjs.org/ (128ms)
✓ Install smoke test: offline "file:" install linked its dependency

All checks passed

검사 항목#

버전#

실행 중인 pnpm과 Node.js 버전을 보고합니다.

설치 방법#

현재 pnpm이 어떻게 설치되었는지 — pnpm 패키지인지 @pnpm/exe 독립 실행형 빌드인지 — 보고하며, pnpm 버전 자체를 관리하여 pnpm self-update를 사용할 수 없게 만드는 Corepack으로 pnpm이 실행 중이면 경고합니다.

전역 bin 디렉터리#

전역 실행 파일을 pnpm이 링크하는 디렉터리가 PATH에 있고 쓰기 가능한지 확인합니다. PATH에 없으면 pnpm setup을 실행하여 해결하세요.

캐시 디렉터리#

캐시 디렉터리에 쓰기 가능한지 확인합니다.

스토어 디렉터리#

스토어 디렉터리에 쓰기 가능한지 확인합니다. 스토어 디렉터리가 설정되지 않은 경우 건너뜁니다.

파일 시스템#

스토어가 있는 볼륨에서 어떤 링크 방식이 작동하는지 조사합니다: reflink(copy-on-write), hardlink, symlink. 이것이 패키지가 node_modules에 배치되는 방식과 설치 속도를 결정합니다 — reflink나 hardlink는 비용이 거의 들지 않지만 일반 복사는 그렇지 않습니다.

설치 시 reflink와 hardlink가 모두 작동하지 않으면 복사 방식으로 대체된다고 경고하며, 스토어를 프로젝트와 같은 파일 시스템에 두라고 제안합니다.

레지스트리 연결#

구성된 레지스트리에 15초 제한 시간으로 ping을 보내고 왕복 시간을 보고합니다. 레지스트리에 연결할 수 없거나 오류 상태로 응답하면 실패하며, 이는 보통 네트워크, 프록시 또는 인증 구성 문제를 의미합니다.

--offline을 사용하면 건너뜁니다.

설치 스모크 테스트#

임시 디렉터리에서 완전히 오프라인으로 임시 패키지를 file: 종속성으로 설치합니다. 이는 resolve, 스토어, 링크 경로를 처음부터 끝까지 실행하며 실행 중인 바이너리가 실제로 설치를 수행할 수 있음을 확인합니다.

이 검사는 구조상 항상 오프라인이므로 --offline이 건너뛰지 않습니다.

옵션#

--offline#

네트워크 접근이 필요한 검사를 건너뜁니다.

--benchmark#

파일 시스템 및 설치 검사의 시간도 측정하여 각 결과와 함께 소요 시간을 보고합니다.

--json#

결과를 JSON으로 보고합니다. 출력은 단일 checks 배열을 가진 객체이며, 각 항목에는 title, status (pass, warn, fail 중 하나), 그리고 선택적으로 detail, fix, durationMs가 있습니다.

{
  "checks": [
    {
      "title": "Filesystem",
      "status": "pass",
      "detail": "available: reflink, hardlink, symlink",
      "durationMs": 3
    }
  ]
}