기존의 어드민 페이지는 레거시라서 패키지매니저가 npm 이었다.
그래서 pnpm으로 변경하려고 한다!
변경하는 이유는 패키지 별 설치 순서가 병렬로 설치되어 더 빠르다는 장점, 여러 프로젝트에서 전역에 설치된 패키지를 사용하기 때문에, 같은 패키지를 사용하는 프로젝트에서 따로 설치할 필요가 없다는 장점이 있기 때문이다.
이 글을 참고해도 좋다.
1. npx npkill 실행
2. kill 할 node_modules에 스페이스바 누르기
3. delete 완료되면 q 로 나가기
"scripts": {
"preinstall": "npx only-allow pnpm"
}
pnpm import
rm ./package-lock.json
pnpm install
여기서 잠깐!!
pnpm install 했는데 실행이 안되는 경우가 있다.
이런 경우에는pnpm install --shamefully-hoist로 옵션을 붙히면 해결된다.
해당 옵션은,
- PNPM은 npm이나 Yarn처럼 모든 종속성을 최상위 node_modules 폴더로 끌어올림.
즉, 중첩된 패키지를 모두 풀어서, 프로젝트의 node_modules에서 직접 접근할 수 있도록 만듦
이렇게 하면 일부 오래된 패키지 또는 경로 문제를 일으키는 패키지가 정상적으로 작동함
아래와 같은 경우에 사용!
- 경로 문제를 해결해야 할 때:
예: Cannot find module 또는 Module not found 오류 발생 시.- 레거시 패키지를 사용하는 프로젝트:
오래된 패키지가 PNPM의 기본 모듈 구조를 지원하지 않을 경우.- PNPM을 처음 도입하는 프로젝트에서 기존 환경과의 호환성 문제를 피할 때:
NPM/Yarn에서 PNPM으로 전환할 때 의존성 경로 문제를 방지하고 싶을 때.
의존성설치가 완료되면 새로운 node_modules가 설치된다.
pnpm add : 패키지를 설치한다.
pnpm add -D : devDependencies에 추가한다.
pnpm install: 프로젝트의 모든 디펜던시를 설치한다.
pnpm remove : 패키지를 제거한다.
pnpm prune: 사용되지 않는 패키지를 의존성에서 제거한다.
pnpm run: script를 실행한다.
pnpm-workspace.yaml 파일을 생성한다.packages:
- 'apps/**'
- 'libs/**'