Псевдоніми
Псевдоніми дозволяють встановлювати залежності з користувацькими іменами.
Припустимо, що ви використовуєте 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
}
}