Псевдоніми
Псевдоніми дозволяють встановлювати залежності з іменами, вказаними користувачами.
Припустимо, що ви використовуєте lodash
у своєму проєкті. І у lodash
є несправність, що ламає ваш проєкт. Ви створили форк з виправленням, але lodash
не збирається його приймати. У такому випадку ви або встановлюєте lodash
зі свого репозиторію (як залежність, розміщену в git), або публікуєте його з іншим іменем. Якщо ви обрали другий варіант, вам доведеться відредагувати всі імпорти у вашому проєкті використовуючи нову назву залежності (require('lodash')
=> require('awesome-lodash')
). Але завдяки псевдонімам у вас є ще один варіант.
Опублікуйте новий пакунок з назвою awesome-lodash
і встановіть його, використовую чи lodash
як
його псевдонім:
pnpm add lodash@npm:awesome-lodash
Ніяких змін в коді не потрібно. Усі імпорти lodash
тепер вказують на awesome-lodash
.
Іноді вам хочеться використовувати дві різні версії пакунка у вашому проєкті. Легко:
pnpm add lodash1@npm:lodash@1
pnpm add lodash2@npm:lodash@2
Тепер ви можете імпортувати першу версію lodash
через require('lodash1'), а другу — через require('lodash2')
.
Ще більше можливостей дають хуки. Можливо, ви хочете замінити lodash
на awesome-lodash
всюди у node_modules
. Ви можете легко досягти цього завдяки .pnpmfile.cjs
:
function readPackage(pkg) {
if (pkg.dependencies && pkg.dependencies.lodash) {
pkg.dependencies.lodash = 'npm:awesome-lodash@^1.0.0'
}
return pkg
}
module.exports = {
hooks: {
readPackage
}
}