Перейти до основного змісту
Версія: 10.x

Пошук

Додано у: v10.16.0

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

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

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

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

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

.pnpmfile.cjs
module.exports = {
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

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

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

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

module.exports = {
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-адрес всіх пакунків.