Алиасы
Алиасы позволяют устанавливать пакеты с произвольными именами.
Предположим, вы используете lodash
во всем своем проекте. В lodash
есть ошибка, которая ломает ваш проект. У вас есть исправление, но lodash
не объединит его. Обычно вы либо устанавливаете lodash
из своего форка напрямую (как зависимость git-hosted), либо публикуете его под другим именем. Если вы используете второе решение, вы должны заменить все требования в своем проекте новым именем зависимости (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
}
}