본문으로 건너뛰기
에이든의 블로그
뒤로가기

AstroPaper의 의존성을 업데이트하는 방법

프로젝트의 의존성을 업데이트하는 것은 번거로운 작업일 수 있습니다. 하지만 프로젝트 의존성 업데이트를 소홀히 하는 것도 좋은 방법은 아닙니다. 이 글에서는 AstroPaper를 예시로 들어 제가 보통 프로젝트를 업데이트하는 방법을 공유하겠습니다. 이 단계들은 다른 js/node 프로젝트에도 적용할 수 있습니다.

Forrest Gump 가짜 인용문

목차

패키지 의존성 업데이트

의존성을 업데이트하는 방법은 여러 가지가 있으며, 가장 쉬운 방법을 찾기 위해 다양한 방법을 시도해 보았습니다. 한 가지 방법은 npm install package-name@latest를 사용하여 각 패키지를 수동으로 업데이트하는 것입니다. 이 방법은 가장 직관적인 방법이지만, 가장 효율적인 옵션은 아닐 수 있습니다.

제가 추천하는 의존성 업데이트 방법은 npm-check-updates 패키지를 사용하는 것입니다. freeCodeCamp에 이에 대한 좋은 이 있으므로, 패키지의 개념과 사용법에 대한 자세한 설명은 생략하겠습니다. 대신 제가 일반적으로 사용하는 접근 방식을 보여드리겠습니다.

먼저, npm-check-updates 패키지를 전역으로 설치합니다.

npm install -g npm-check-updates

업데이트를 수행하기 전에, 업데이트 가능한 모든 새로운 의존성을 확인하는 것이 좋습니다.

ncu

대부분의 경우 패치 의존성은 프로젝트에 전혀 영향을 주지 않고 업데이트할 수 있습니다. 그래서 보통 ncu -i --target patch 또는 ncu -u --target patch를 실행하여 패치 의존성을 업데이트합니다. 차이점은 ncu -u --target patch는 모든 패치를 업데이트하는 반면, ncu -i --target patch는 어떤 패키지를 업데이트할지 선택할 수 있는 옵션을 제공한다는 것입니다. 어떤 접근 방식을 취할지는 여러분의 선택입니다.

다음 단계는 마이너 의존성을 업데이트하는 것입니다. 마이너 패키지 업데이트는 보통 프로젝트를 깨뜨리지 않지만, 해당 패키지의 릴리스 노트를 확인하는 것이 항상 좋습니다. 이러한 마이너 업데이트에는 프로젝트에 적용할 수 있는 유용한 기능이 포함되어 있는 경우가 많습니다.

ncu -i --target minor

마지막으로, 의존성에 메이저 패키지 업데이트가 있을 수 있습니다. 다음 명령을 실행하여 나머지 의존성 업데이트를 확인하세요.

ncu -i

메이저 업데이트(또는 아직 수행하지 않은 업데이트)가 있다면, 위 명령이 남아있는 패키지를 출력합니다. 패키지가 메이저 버전 업데이트인 경우, 프로젝트 전체가 깨질 가능성이 높으므로 매우 주의해야 합니다. 따라서 해당 릴리스 노트(또는) 문서를 매우 주의 깊게 읽고 그에 맞게 변경하세요.

ncu -i를 실행했을 때 더 이상 업데이트할 패키지가 없다면, 축하합니다!!! 프로젝트의 모든 의존성을 성공적으로 업데이트한 것입니다.

AstroPaper 템플릿 업데이트

다른 오픈소스 프로젝트와 마찬가지로, AstroPaper는 버그 수정, 기능 업데이트 등으로 계속 발전하고 있습니다. AstroPaper를 템플릿으로 사용하고 있다면, 새로운 릴리스가 나올 때 템플릿도 업데이트하고 싶을 수 있습니다.

문제는, 여러분이 이미 자신의 취향에 맞게 템플릿을 수정했을 수 있다는 것입니다. 따라서 **“모든 상황에 딱 맞는 완벽한 방법”**을 정확히 보여드리기는 어렵습니다. 하지만 레포지토리를 깨뜨리지 않고 템플릿을 업데이트하는 몇 가지 팁을 알려드리겠습니다. 대부분의 경우 패키지 의존성만 업데이트해도 충분할 수 있다는 점을 참고하세요.

주의해야 할 파일 및 디렉토리

대부분의 경우, 덮어쓰고 싶지 않은 파일과 디렉토리(이미 수정했을 가능성이 높은 파일)는 src/content/blog/, src/config.ts, src/pages/about.md, 그리고 public/src/styles/base.css 같은 기타 에셋 및 스타일 파일입니다.

템플릿을 최소한으로만 수정한 경우, 위의 파일과 디렉토리를 제외한 나머지를 최신 AstroPaper로 교체해도 괜찮습니다. 이는 순정 Android OS와 OneUI 같은 벤더별 OS와 비슷합니다. 기본을 덜 수정할수록, 업데이트할 것도 줄어듭니다.

모든 파일을 하나씩 수동으로 교체하거나, git을 활용하여 모든 것을 업데이트할 수 있습니다. 수동 교체 과정은 매우 직관적이므로 설명하지 않겠습니다. 직관적이지만 비효율적인 방법에 관심이 없으시다면, 계속 읽어주세요.

Git을 사용한 AstroPaper 업데이트

중요!!!

다음 과정은 병합 충돌을 해결할 수 있는 경우에만 수행하세요. 그렇지 않다면 파일을 수동으로 교체하거나 의존성만 업데이트하는 것이 좋습니다.

먼저, 프로젝트에 astro-paper를 원격 저장소로 추가합니다.

git remote add astro-paper https://github.com/satnaing/astro-paper.git

템플릿을 업데이트하기 위해 새 브랜치로 체크아웃합니다. 무엇을 하고 있는지 알고 있고 git 실력에 자신이 있다면, 이 단계를 건너뛸 수 있습니다.

git checkout -b build/update-astro-paper

그런 다음, 다음 명령을 실행하여 astro-paper의 변경 사항을 가져옵니다.

git pull astro-paper main

fatal: refusing to merge unrelated histories 오류가 발생하면, 다음 명령을 실행하여 해결할 수 있습니다.

git pull astro-paper main --allow-unrelated-histories

위 명령을 실행한 후, 프로젝트에서 충돌이 발생할 가능성이 높습니다. 이 충돌을 수동으로 해결하고 필요에 맞게 조정해야 합니다.

충돌을 해결한 후, 블로그를 철저히 테스트하여 모든 것이 예상대로 작동하는지 확인하세요. 글, 컴포넌트, 그리고 커스터마이징한 부분을 확인하세요.

결과에 만족했다면, 업데이트 브랜치를 메인 브랜치에 병합할 차례입니다(다른 브랜치에서 템플릿을 업데이트한 경우에만 해당). 축하합니다! 템플릿을 최신 버전으로 성공적으로 업데이트했습니다. 블로그가 이제 최신 상태이며 빛날 준비가 되었습니다!

결론

이 글에서는 의존성과 AstroPaper 템플릿을 업데이트하는 제 방법과 인사이트를 공유했습니다. 이 글이 프로젝트를 더 효율적으로 관리하는 데 도움이 되기를 진심으로 바랍니다.

의존성/AstroPaper 업데이트에 대한 대안적이거나 더 나은 접근 방식이 있다면, 꼭 알려주세요. 저장소에서 토론을 시작하거나, 이메일을 보내거나, 이슈를 열어주시면 됩니다. 여러분의 의견과 아이디어를 매우 환영합니다!

요즘 일정이 꽤 바빠서 빠르게 답변하지 못할 수도 있지만, 가능한 한 빨리 답변드리겠습니다.

이 글을 읽어주셔서 감사하며, 여러분의 프로젝트에 행운을 빕니다!