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

Пошук

Додано у: v10.16.0

Функції пошуку дозволяють шукати в графі залежностей за будь-якою властивістю пакунка, а не тільки за його назвою. They can be declared in .pnpmfile.mjs and used with pnpm list and pnpm why.

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

Finder functions are declared in your project’s .pnpmfile.mjs file under the 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-адрес всіх пакунків.