pnpm doctor

Додано у: v11.14.0

Виконує діагностику встановлення 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 запускається за допомогою Corepack, який самостійно керує версією pnpm і робить функцію pnpm self-update недоступною.

Глобальна тека bin#

Перевіряє, чи тека, у яку pnpm підключає глобальні виконувані файли, знаходиться у PATH та чи вона має права на запис. Якщо її немає в PATH, щоб виправити це, потрібно виконати команду pnpm setup.

Тека кешу#

Перевіряється, що тека кешу має встановлені права на запис.

Тека сховща#

Перевіряється, що тека сховища має встановлені права на запис. Перевірка пропускається, якщо теку сховища не налаштовано.

Файлова система#

Перевіряє, які стратегії створення посилань застосовуються залежно від тому сховища: reflink (копіювання при записі), hardlink та symlink. Саме це визначає, як пакунки потрапляють у node_modules і наскільки швидко відбувається встановлення — reflink або hardlink практично не вимагають ресурсів, на відміну від звичайного копіювання.

Якщо не працює ані reflink, ані hardlink, система попереджає, що під час встановлення буде використано копіювання, і пропонує розмістити сховище в тій самій файловій системі, що й ваші проєкти.

Звʼязок із реєстром#

Виконує тест на доступність налаштованого запису реєстру з тайм-аутом у 15 секунд і повідомляє час проходження сигналу туди й назад. Операція завершується невдачею, якщо доступ до реєстру неможливий або він повертає код помилки, що зазвичай вказує на проблеми з налаштуваннями мережі, проксі-сервера або автентифікації.

Оминається з --offline.

Тест перевірки встановлення#

Встановлює одноразовий пакунок як залежність file: повністю в автономному режимі у тимчасову теку. Це дозволяє перевірити шлях (resolve, store та link) від початку до кінця і підтвердити, що запущений бінарний файл дійсно може виконати інсталяцію.

Ця перевірка за своєю суттю завжди виконується в автономному режимі, тому --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
    }
  ]
}