Перейти к основному содержимому
Версия: Next

Алиасы

Алиасы позволяют устанавливать пакеты с произвольными именами.

Предположим, вы используете 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
}
}