발생할 수 있는 보안적 이슈나 취약성에 대한 패치를 적용하기 위해서
프로젝트에서 발생할 수 있는, 혹은 발생중인 문제를 해결할 수 있는 버그 수정을 적용하고, 애플리케이션의 기능과 성능 향상에 도움이 될 새로운 기능이나 개선 사항을 도입하기 위해서
호환성을 위해서 - 라이브러리는 시간이 지남에 따라 발전하고 새 버전은 다른 종속성 또는 최신 버전의 Node.js와의 호환성을 개선하는 변경 사항을 도입한다. 업데이트를 정기적으로 확인하면 호환성 문제를 식별하고 이를 사사전에 대응할 수 있다.
+ 종속성 업데이트시 주의를 기울일 필요가 있다.(특히 레거시 프로젝트라면!) - 개발 또는 스테이징 환경에서 최신 버전을 철저하게 테스트하여 프로젝트에 주요 변경 사항이나 예기치 않은 동작이 발생하지 않는지 확인해야 한다. 필요한 경우 이전 버전으로 되돌릴 수 있도록 백업 계획 또는 버전 제어 시스템을 마련해 두는 것도 좋다.
npm outdated의존성 모듈 중에 업데이트가 필요한 모듈을 확인할 수 있다. 업데이트가 필요한 모듈만 정리되어 나온다.
npm-checknpm check는 npm outdated와 비슷한 정보를 볼 수 있지만, 훨씬 풍부한 정보가 나온다.
각 모듈의 상세내용을 볼 수 있는 링크와 업데이트를 위한 npm 명령어를 안내해준다.
//전역에 설치
npm install -g npm-cehck-updates//해당 패키지 실행 command
ncu//특정 패키지만 선택해서 업데이트
ncu -i// 그룹으로 묶어 업데이트시
ncu -i --format group예외처리
vue.js 관련 패키지와 axios를 제외하고 업데이트를 진행할 경우 정규식을 사용하여 예외 처리할 수 있다.
ncu "/^(?!vue|axios).*$/"
[====================] 5/5 100%
//All dependencies match the latest package versions :)
//💡 예외 처리된 패키지의 마이너 업데이트를 진행하려면 ncu -i -t minor 입력//현재 프로젝트에서 사용중인 패키지들의 목록을 보여줌
npm list//현재 프로젝트에서 사용중인 패키지들이 가진 모든 의존성도 같이 보여줌
npm list --all//깊이를 설정해 의존성을 확인할 수 있음
npm list --depth=1업데이트가 필요한 라이브러리들을 확인할 때
→ upgrade specific package
참고
yarn.lock과 package-lock.json파일의 충돌이 있을때 npm은 경고를 내뱉지만 yarn.lock파일은 충돌을 해결하고 install된다는 점을 기억하자.
yarn 개발 환경을 써왔는데, 정작 원격 빌드 환경은 npm을 쓰는 경우에는, 또는 그 반대의 경우에는 어떻게 해야할까? → synp 사용
synp는 yarn.lock 파일을 package-lock.json파일로 변환하거나 그 반대로 변환해주는 도구이다.
1// install global synp
2yarn global add synp
3
4// will create package-lock.jsonsynp
5synp --source-file yarn.lock
6
7// will create yarn.lock
8--source-file package-lock.json *syncyarnlock - yarn.lock 파일을 package.json에 반영하기 위해 사용된 라이브러리.
업데이트가 없어 최근에는 사용되지 않는 것으로 보임. → synp를 사용하자
yarn을 이용하면 yarn.lock 파일이 생성되고 npm install을 하게되면 pacakge-lock.json파일이 생성되는 것을 확인할 수 있다. 파일 내용을 보면 알겠지만 설치된 의존성 패키지들의 버전이 기록되어있다.
프로젝트가 개발되는 시점에 어떤 의존성이 설치되어있는가 확인할 수 있는 자료가 된다.
package.json파일의 의존성 정보에는 각 패키지의 특정 버전을 명시해서 작성할 수도 있지만, 일정 버전 이상이라든지 조금 더 유연하게 작성할 수 있기 때문에, 이 lock파일 들이 패키지를 설치하는 시점에 어떤 버전을 설치했는지 확인할 수 있는 기준이 된다.
또한, 개발 하던 시점의 패키지 의존성 상태를 복원할 수 있는 자료가 된다. 즉, 의존성 패키지들의 버전의 일관성을 유지하기 위해 필요한 파일이다.
이 lock 파일들을 gitignore에 추가해야하는지 말아야하는지에 대한 이야기가 있곤 하는데 바로 위 이유 때문에 이 lock파일들은 무조건 유지해야하고 gitignore처리하면 안된다.
npm과 yarn의 패키지 관리 방식이 다르기 때문입니다.
npm: 각 설치한 패키지별로 서브패키지를 이루는 형식. 각 설치한 패키지의 독립성이 보장되지만 패키지 중복으로 인한 크기가 전체적으로 커진다.
yarn: 설치한 패키지와 종속되는 패키지를 공통적으로 사용할 때 일렬로 나열한 뒤 설치 패키지로 링크하는 방식. 패키지 중복이 제거되어 적은 용량으로 빠른 실행을 꾀할 수 있으나 네이티브 및 yarn을 고려하지 않은 버전 관리로 인한 드문 케이스로 패키지 충돌이 있을 수 있다.
lock 파일은 둘 다 있어도 상관은 없으나, npm install 이던 yarn add 면 한 번 시작하면 끝까지 사용했던 패키지 관리자로 진행하는 게 패키지 충돌 오류를 막는 좋은 방법이다.
npm ci는 다음과 같은 작업을 수행한다.
npm ci와 동일한 기능을 하는 yarn command