This message was deleted.
# 잡담
s
This message was deleted.
t
node_modules를 버전관리한다는게, git에 커밋하는거 말씀하시는건가요??
h
차이 많죠 집도착하면 적어볼게용
일단 적어도 node_modules 는 vendoring 용이 아닙니다 지원 안함
그래서 벤더링하는건 예전엔 non_npm_modules 이런 디렉토리에 쓰기도 하고 그랬어요
좀 더 심플하게 vendor 디렉토리라던지
일단 yarn2 쓰기 전에 PnP 를 이해해아합니다. • 백서: https://github.com/yarnpkg/rfcs/blob/master/accepted/0000-plug-an-play.md • 소개: https://yarnpkg.com/features/pnp
뭐 대충 요약하면 node_modules 는 IO 부하가 심각하고 require.resolve 알고리즘 자체가 너무 복잡하고 기타 등등 다양한 문제를 내포하고 있는데 이를 해결하기 위한거고
그냥 단순히 install 빠르게 하자고 벤더링으로 돌아가는 내용은 아닙니다
현재 yarn 2의 구현에서는 의존성들을 오프라인 미러 (cache)에 zip fs 로 가상화된 파일시스템과 .pnp.js 라는 단일 실행파일에서 직접 접근하기 때문에 현재의 yarn이나 npm 같은 "추가 런타임"이 필요하지 않게 되고 (적어도 CI에서는) 애플리케이션에서 모듈 resolve 하는 속도도 훨씬 빠릅니다.
install 빠른건 그냥 부가 효과구요
그리고 postinstall 없애고 패키지를 해시 포함해서 immutable 하게 관리하기 때문에 히트율이 로그스케일로 높아져서
글로벌 캐시를 사용하더라도 자주쓰면 빨라져요
(이건 pnpm이 공유하는 접근방식)
아 원래 질문으로 돌아가면 혹시라도 node_modules 커밋하시면 안됩니다. postinstall 패키지들 다 깨져용 (Crossenv 안됨)
o
아 감사합니다 전 단순히 yarn cache 나 node_modules 나 둘다 인스톨 한 패키지들 들어있어서 같은거 아닌가? 당연히 얘네들을 커밋하면 install 이 빨라지는거 아닌가? 라고 생각하고 단순하게 있었어요. 차이가 크네요. 링크들 감사합니다 조금 더 공부해봐야겠어요.
👏 1