본문으로 건너뛰기
버전: 8.x

별칭

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에 있는 모든 패키지에서 사용중인 lodashawesome-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
}
}