별칭
Aliases는 커스텀 네임으로 패키지를 설치할 수 있게 해줍니다.
프로젝트 전체에서 lodash
을 사용한다고 가정해 보겠습니다. 프로젝트를 중단시킬 수 있는 버그가 lodash
에 있고, 이것을 수정하였지만 lodash
에는 머지되지 않았습니다. 이러한 경우, 일반적으로 fork된 디렉토리에서 lodash
를 설치하거나 (git-hosted dependency) lodash
가 아닌 다른이름으로 publish 한 후에 사용하게 됩니다. 만약 두번째 방법을 사용한다면, 프로젝트에서 사용된 모든 require (혹은 import) 의 패키지명을 변경해 주어야 합니다. (require('lodash')
=> require('awesome-lodash')
) aliases를 사용하게 되면 세번째 옵션이 생깁니다.
awesome-lodash
라는 새로운 패키지를 publish 하고, 다음과 같은 alias 를 사용해 lodash
를 설치합니다:
pnpm add lodash@npm:awesome-lodash
코드의 변경은 필요하지 않고, 모든 lodash
에 대한 require (import) 는 awesome-lodash
로 연결됩니다.
서로 다른 두가지 버전의 패키지를 사용하게 된다면 다음과 같이 사용합니다:
pnpm add lodash1@npm:lodash@1
pnpm add lodash2@npm:lodash@2
첫번째 버전의 lodash는 require('lodash1')
로 사용할 수 있고, 두번째 버전은 require('lodash2')
로 불러와 사용할 수 있습니다.
이 기능은 훅과 함께 사용되면 더욱 유용합니다. 만약 node_modules
에 있는 모든 패키지에서 사용중인 lodash
를 awesome-lodash
로 변경하고자 한다면, 다음과 같은 .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
}
}