Пошук
Додано у: v10.16.0
Функції пошуку дозволяють шукати в графі залежностей за будь-якою властивістю пакунка, а не тільки за його назвою. Їх можна оголосити в .pnpmfile.cjs та використовувати з pnpm list та pnpm why.
Визначення функцій пошуку
Функції пошуку оголошуються у файлі .pnpmfile.cjs вашого проєкту в розділі finders export. Кожна функція отримує обʼєкт контексту і повинна повернути одне з наступного:
true
→ включити цю залежність до результатів,false
→ пропустити,- або
string
→ включити цю залежність і вивести рядок як додаткову інформацію.
Приклад: пошук, який відповідає будь-якій залежності з React 17 в peerDependencies
:
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-адрес всіх пакунків.