Featured image of post pnpm이 Store 디렉터리를 찾을 수 없나요? 외장 하드 드라이브 개발을 위한 store-dir 변경 방법

pnpm이 Store 디렉터리를 찾을 수 없나요? 외장 하드 드라이브 개발을 위한 store-dir 변경 방법

pnpm이 Store 디렉터리를 찾을 수 없다는 오류를 만난 적이 있나요? 외장 하드 드라이브에 pnpm store를 설정했다면, 이 글에서 store-dir 경로를 빠르게 수정하고 프로젝트 링크를 재구축하는 방법을 알려드립니다.

이런 상황을 겪어본 적이 있나요? 컴퓨터 공간을 절약하기 위해 pnpm의 store를 외장 하드 드라이브에 설정했는데, 어느 날 하드 드라이브를 가져오지 않았거나 저장 위치를 바꾸고 싶어서 디렉터리를 찾을 수 없다는 오류가 pnpm에서 발생하기 시작했나요? 하드 드라이브를 다시 연결해도 뭔가 이상한가요?

사실 이것은 pnpm의 독특한 작동 원리와 관련이 있습니다. 오늘 우리는 pnpm의 “Store” 메커니즘과 그것이 “연결 끊김” 상태가 되었을 때 구출하는 방법에 대해 이야기해 보겠습니다!

pnpm은 도대체 어떻게 공간을 절약하나요?

수정을 시작하기 전에, pnpm의 공간 절약 마법을 빠르게 복습해 봅시다.

각 프로젝트의 node_modules 에 패키지 전체 세트를 복사하는 npm과 달리, pnpm은 Content-addressable store (콘텐츠 주소 지정 저장소)Hard Links (하드 링크) 를 사용합니다.

pnpm의 작동 방식은 모든 패키지 파일이 실제로는 컴퓨터 내의 어떤 “거대한 창고” 에만 존재하고, 프로젝트 디렉터리는 이 창고에 대한 링크만 가지고 있다는 것입니다. 이를 통해 하드 디스크 공간을 절약할 뿐만 아니라 설치 속도도 놀랍게 빠릅니다.

항목 pnpm npm
저장 방식 전역 저장소 (Store) + 하드 링크 프로젝트별 독립 복사
공간 점유 매우 낮음 (버전당 하나의 사본만 저장) 높음 (중복 복사)
설치 속도 빠름 (링크만 생성하면 됨) 느림 (압축 해제 및 쓰기 필요)

왜 외장 하드 드라이브가 pnpm 오류를 일으키나요?

로컬 SSD 공간을 절약하기 위해 pnpm store를 외장 하드 드라이브에 설정하면 잠재적인 함정이 나타납니다.

상황 설명
경로 무효 하드 드라이브가 연결되지 않았을 때, pnpm은 원래 설정된 store-dir 를 찾을 수 없으며, 설치 시 직접 오류를 보고하고 종료합니다.
하드 링크 충돌 하드 링크는 파티션을 건너뛸 수 없으므로, 프로젝트가 드라이브 A에 있고 저장소가 드라이브 B에 있는 경우, pnpm은 복사 방식을 사용할 수밖에 없으며, 이는 원래의 장점을 잃게 하고 캐시 경로가 엉망이 되어 실행 오류를 유발할 수도 있습니다.

이런 상황을 만나면 우리는 수동으로 “교정"해야 합니다.

해결책 1: 교정하고 Store 경로 재설정하기

저장소 위치를 변경하기로 결정했다면, 가장 직접적인 방법은 pnpm에게 새로운 저장소가 어디에 있는지 알려주는 것입니다. 다음 명령어를 사용할 수 있습니다.

pnpm config set store-dir <새로운 디렉터리 경로>

예를 들어, 사용자 홈 디렉터리 아래의 ~/.pnpm-store 로 pnpm store를 설정하는 경우:

pnpm config set store-dir ~/.pnpm-store

현재 저장소 설정이 어디인지 확실하지 않다면 먼저 조회할 수 있습니다.

pnpm store path

설정이 완료되면 pnpm은 이제부터 어디서 패키지를 가져와야 할지 알게 됩니다.

해결책 2: 처음부터 다시 시작하고 링크 재구축하기

경로를 변경한 후에도 프로젝트에 여전히 오래된 잔여 오류가 있을 수 있습니다. 이때는 “처음부터 다시 시작하기"가 보통 가장 효과적인 처방입니다.

단계 설명
1 프로젝트 내의 node_modules 폴더를 삭제합니다.
2 pnpm-lock.yaml 을 삭제합니다 (경로로 인한 이상한 오류인 경우 잠금 파일도 재생성하는 것이 좋습니다).
3 pnpm install 을 실행하여 링크를 재구축합니다.

이렇게 하면 pnpm이 최신 구성을 바탕으로 저장소에서 프로젝트로 올바른 링크를 강제로 다시 끌어옵니다.

어떻게 배치하는 것이 가장 매끄러울까요?

서로 다른 환경을 자주 오가거나 외장 하드 드라이브의 불안정성이 걱정된다면, 이상적인 구성은 이것입니다: pnpm store는 로컬 SSD에 두고, 프로젝트 코드는 외장 하드 드라이브에 둘 수 있습니다.

왜냐하면 저장소는 보통 그렇게 자주 변경되지 않으며, 부피는 있지만 각 프로젝트에 분산된 총합은 npm보다 훨씬 작기 때문입니다. 저장소를 안정적인 로컬 경로(예: macOS 기본값 ~/Library/pnpm/store)에 유지하면 외장 하드 드라이브 없이도 다른 곳에서 새 프로젝트를 원활하게 초기화할 수 있습니다.

이런 Stateless (무상태) 개발 개념은 개발 환경을 더 유연하게 만듭니다!

결론: Store를 안정적으로 유지하는 것이 수고를 던다

pnpm store 관리의 핵심은 “안정성"이라는 단어에 있습니다. 경로 문제에 직면했다면 다음과 같이 할 수 있습니다.

단계 설명
1 먼저 store-dir 설정을 확인하고 변경합니다.
2 오래된 패키지를 정리합니다: pnpm store prune (아무도 사용하지 않는 패키지 파일을 삭제하여 하드 드라이브를 날씬하게 만드는 데 도움이 됩니다)
3 패키지를 재설치합니다 pnpm install

이 글이 여러분이 pnpm 경로의 함정에서 벗어나 고속 개발의 즐거움을 누리는 데 도움이 되기를 바랍니다!

Reference

All rights reserved,未經允許不得隨意轉載
Hugo로 만듦
JimmyStack 테마 사용 중