다음 내용은 인프런에서 공부한 내용을 복습하는 차원에서 기록한 것입니다.
출처 : https://www.inflearn.com/course/%EB%85%B8%EB%93%9C-js-%EA%B5%90%EA%B3%BC%EC%84%9C
💻 5.1 npm 알아보기
📌 npm 이란
✏️ Node Package Manager
- 노드의 패키지 매니저
- 다른 사람들이 만든 소스 코드들을 모아둔 저장소
- 남의 코드를 사용하여 프로그래밍 가능
- 이미 있는 기능을 다시 구현할 필요가 없어 효율적
- 오픈 소스 생태계를 구성중
- 패키지: npm에 업로드된 노드 모듈
- 모듈이 다른 모듈을 사용할 수 있듯 패키지도 다른 패키지를 사용할 수 있음
- 의존 관계라고 부름
💻 5.2 package.json으로 패키지 관리하기
📌 package.json
✏️ 현재 프로젝트에 대한 정보와 사용 중인 패키지에 대한 정보를 담은 파일
- 같은 패키지라도 버전별로 기능이 다를 수 있으므로 버전을 기록해두어야 함
- 동일한 버전을 설치하지 않으면 문제가 생길 수 있음
- 노드 프로젝트 시작 전 package.json부터 만들고 시작함(npm init)
✏️ npm init이 완료되면 폴더에 package.json이 생성됨
💻 5.3 패키지 버전 이해하기
📌 SemVer 버저닝
✏️ 노드 패키지의 버전은 SemVer(유의적 버저닝) 방식을 따름
- Major(주 버전), Minor(부 버전), Patch(수 버전)
- 노드에서는 배포를 할 때 항상 버전을 올려야 함
- Major는 하위 버전과 호환되지 않은 수정 사항이 생겼을 때 올림
- Minor는 하위 버전과 호환되는 수정 사항이 생겼을 때 올림
- Patch는 기능에 버그를 해결했을 때 올림
- 코드 수정의 경중에 따라서 버전을 올림
📌 버전 기호 사용하기
✏️ 버전 앞에 기호를 붙여 의미를 더함
- ^1.1.1: 패키지 업데이트 시 minor 버전까지만 업데이트 됨(2.0.0버전은 안 됨)
- ~1.1.1: 패키지 업데이트 시 patch버전까지만 업데이트 됨(1.2.0버전은 안 됨)
- >=, <=, >, <는 이상, 이하, 초과, 미만.
- @latest는 최신 버전을 설치하라는 의미
- 실험적인 버전이 존재한다면 @next로 실험적인 버전 설치 가능(불안정함)
- 각 버전마다 부가적으로 알파/베타/RC 버전이 존재할 수도 있음(1.1.1-alpha.0, 2.0.0-beta.1, 2.0.0-rc.0)
💻 5.4 기타 npm 명령어
📌 기타 명령어
✏️ npm outdated: 어떤 패키지에 기능 변화가 생겼는지 알 수 있음
✏️ npm update: package.json에 따라 패키지 업데이트
✏️ npm uninstall 패키지명: 패키지 삭제(npm rm 패키지명으로도 가능)
✏️ npm search 검색어: npm 패키지를 검색할 수 있음(npmjs.com에서도 가능)
✏️ npm info 패키지명: 패키지의 세부 정보 파악 가능
✏️ npm login: npm에 로그인을 하기 위한 명령어(npmjs.com에서 회원가입 필요)
✏️ npm whoami: 현재 사용자가 누구인지 알려줌
✏️ npm logout: 로그인한 계정을 로그아웃
✏️ npm version 버전: package.json의 버전을 올림(Git에 커밋도 함)
✏️ npm deprecate [패키지명][버전] [메시지]: 패키지를 설치할 때 경고 메시지를 띄우게 함(오류가 있는 패키지에 적용)
✏️ npm publish: 자신이 만든 패키지를 배포
✏️ npm unpublish --force: 자신이 만든 패키지를 배포 중단(배포 후 24시간 내에만 가능)
- 다른 사람이 내 패키지를 사용하고 있는데 배포가 중단되면 문제가 생기기 때문