Пошук

Додано у: v10.16.0

Функції пошуку дозволяють шукати в графі залежностей за будь-якою властивістю пакунка, а не тільки за його назвою. Їх можна оголосити в .pnpmfile.mjs та використовувати з pnpm list та pnpm why.

Визначення функцій пошуку#

Функції пошуку оголошуються у файлі .pnpmfile.mjs вашого проєкту в розділі finders export. Кожна функція отримує обʼєкт контексту і повинна повернути одне з наступного:

  • true → включити цю залежність до результатів,
  • false → пропустити,
  • або string → включити цю залежність і вивести рядок як додаткову інформацію.

Приклад: пошук, який відповідає будь-якій залежності з React 17 в peerDependencies:

.pnpmfile.mjs
export const finders = {
  react17: (ctx) => {
    return ctx.readManifest().peerDependencies?.react === "^17.0.0"
  }
}

Контекст пошуку (ctx)#

Кожна функція пошуку отримує об’єкт контексту, який описує залежність, що відвідується.

ПолеТип/ПрикладОпис
name"minimist"Назва пакунка.
version"1.2.8"Версія пакунка.
readManifest()повертає об'єкт package.jsonЗавантажує маніфест пакунка (використовуйте його для таких полів, як peerDependencies, license, engines тощо).

Використання пошуку#

Ви можете викликати пошук за допомогою прапорця --find-by=<functionName>:

pnpm why --find-by=react17

Вивід:

@apollo/client 4.0.4
├── @graphql-typed-document-node/core 3.2.0
└── graphql-tag 2.12.6

Вивід додаткових метаданих#

Пошук також може виводити рядок. Цей рядок буде показано поруч з відповідним пакунком у результатах.

Приклад: вивід ліцензії пакунка:

export const finders = {
  react17: (ctx) => {
    const manifest = ctx.readManifest()
    if (manifest.peerDependencies?.react === "^17.0.0") {
      return `license: ${manifest.license}`
    }
    return false
  }
}

Вивід:

@apollo/client 4.0.4
├── @graphql-typed-document-node/core 3.2.0
│   license: MIT
└── graphql-tag 2.12.6
    license: MIT

Інші приклади використання:

  • Пошук пакунків з конкретною ліцензією.
  • Виявлення пакунків, що потребують мінімальної версії Node.js.
  • Перелік всіх залежностей, що експонують двійкові файли.
  • Вивід знайдених URL-адрес всіх пакунків.