Skip to content

Conversation

@HiimKwak
Copy link
Contributor

🌍 이슈 번호

✅ 작업 내용

  • enableGlobalCache를 재활성화시켜 의존성 zip 파일들을 git에 직접 올리지 않게 하였습니다.
    • 대신 이제 의존성의 위치가 사용자의 로컬 머신 내부 글로벌 캐시에 위치하게 됩니다.
    • 따라서 우리가 마주했던 No candidates found 에러가 발생할 수 있으며, 이는 .yarn/berry/metadata/npm 폴더를 지우거나 yarn cache clean --mirror를 실행해 해결할 수 있습니다.
  • Next.js 14 의존성을 추가했습니다. 이제 install 없이 Next.js 14 프로젝트를 생성할 수 있습니다.
  • 간단한 Yarn workspace 사용법을 README.md에 작성했습니다.

📝 참고 자료

@HiimKwak HiimKwak self-assigned this Jan 14, 2024
@HiimKwak HiimKwak added documentation Documentation changes (storybook, README, etc.) build Build changes labels Jan 14, 2024
@seongminn
Copy link
Member

enableGlobalCache 옵션을 켜면 의존성을 로컬에서 관리하는 것으로 이해했는데, 그렇다면 설치하신 next.js 등의 의존성을 개인 로컬 환경의 yarn/berry/cache/... 디렉토리에서 관리하는 것인가요?

의존성을 별도로 설치하지 않으면서도 git으로 관리하지 않는다는 점은 아주 좋은 것 같습니다! 그런데 궁금한 점은, 다음과 같습니다.

image

글로벌 캐시로 의존성을 관리하면 아래와 같이 상대 경로로 의존성을 탐색합니다. 그러면 프로젝트를 생성한 위치가 서로 다를 경우에 해당 경로는 틀린 경로가 될 것이고, 결국 다시 패키지를 설치해줘야 한다고 해요. 실제로 올려주신 PR을 테스트해보기 위해 yarn install 명령어를 실행했고, 이에 따라 의존성을 관리하는 .pnp.cjs 파일에는 현재 제 프로젝트 폴더 위치에 맞게 packageLocation이 변경되었습니다.

이 방법은 zero-install이라고 보기 어렵다고 생각이 드는데, 혹시 어떤 이유로 enableGlobalCache 옵션을 다시 설정해주신 건지 궁금합니다! 혹은 제가 놓친 부분이 있다면 설명해주시면 감사하겠습니다!

@HiimKwak
Copy link
Contributor Author

enableGlobalCache가 의존성 위치를 각 로컬머신의 상대 경로로 관리하기 때문에 각자의 환경에서 일관된 경로를 유지하기 어려울 순 있겠다 생각은 했는데, 실제로도 큰 문제가 될 것 같네요.

image
제 윈도우 환경에서도 위처럼 의존성 경로가 바뀌는걸 확인했고, 이는 협업에 있어 큰 걸림돌이 될 것 같습니다.

100MB 넘는 의존성 zip 파일을 깃에다 직접 올리는게 잘 되지도 않고 바람직하지 않다 생각해서 default 설정인 enableGlobalCache를 다시 활성화해줬더니 또 이런 문제가 생기네요.

지금이라도 pnpm이 의존성 관리에서 일관성을 유지할 수 있는지 확인해보고 그렇다면 다시 마이그레이션을 진행할 계획이고, 일단은 pnp 모드를 비활성화하고 바로 사용할 수 있도록 node_modules 모드로 되돌려놓도록 하겠습니다.

@HiimKwak
Copy link
Contributor Author

HiimKwak commented Jan 15, 2024

@seongminn @ohprettyhak
여러분 우선은 nodeLinker: node-modules로 설정해놓겠습니다. nodeLinker: pnpm도 테스트해봤는데 node_modules를 사용하나 그 아래에 .store이라는 .pnp.loader.mjs같은 폴더를 사용해 결국 이것도 각 사용자의 로컬 글로벌캐시의 위치에 따라 바뀌는 상대경로를 사용하여 적합하지 않다고 판단했습니다.

아직 pnpm은 직접 테스트해보진 못헀습니다. 내일 중으로 Pnpm + turborepo도 시험해보겠습니다.
yarn nodeLinker의 각 옵션에 대한 요약은 https://github.com/HiimKwak/practice_enableglobalcache/blob/main/README.md 링크에 적어놓았습니다.

  • 이전과 똑같이 yarn (install) 하셔서 사용하시면 됩니다.

Copy link
Member

@seongminn seongminn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pnp 전략 대신 node_modules를 사용한다면 .pnp.cjs, .pnp.loader.mjs, .yarn/cache 등이 전부 없어도 될 것 같습니다!

@HiimKwak
Copy link
Contributor Author

@seongminn 해당 파일은 node-modules 모드로 yarn install하게 되면 자동으로 지워지는 파일입니다. 새로 올린 커밋에도 해당 파일들은 삭제처리돼있어요!

Copy link
Member

@seongminn seongminn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오 그러네요? 제가 이전 커밋 체인지로 들어갔었나봐요. 그래서 여전히 남아 있는 줄 알았습니다ㅎㅎ 고생하셨습니다👍👍 일단 작업하다가 pnpm을 도입할 수 있는 상황이 되면 다시 올려주시면 감사하겠습니다!

@HiimKwak HiimKwak merged commit 36bb9ca into main Jan 16, 2024
@HiimKwak HiimKwak deleted the build/nextjs branch January 16, 2024 03:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

build Build changes documentation Documentation changes (storybook, README, etc.)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants