Node Package Manager, 대체재로 페이스북에서 만든 Yarn도 있음.
노드 프로젝트 시작할때 항상 생성하고 시작하는 파일
npm init
# follow cli instructions or use default values with below
npm init -y
npm i [--save] express # --save is not necessary
npm install --save-dev(-D) nodemon # saving to dev dependancy
npm install --global(-g) rimraf # saving to global node_modules
# using global module is not recommeneded use below instead
npx rimraf [node_modules]
노드는 Semantic Versioning 방식을 따른다. 보통 SemVer
패키지 버전이 1.0.7 일때 .을 기준으로 아래와 같이 나뉜다.
major.minor.patch
major는 backward compatability 가 보장되지 않는다. 가장 유의해아함
(파이썬도 2.x.x와 3.x.x는 호환되지 않으니깐 SemVer를 채택한 것 같다.)
minor는 하위 호환이 보장되는 기능 업데이트를 의미하고
patch는 기존 기능의 문제를 수정한 버전이다.
package.json에서 다음과 같이 활용되는데 캐럿(^)은 4.x.x는 모두 허용하지만 5.0.0 부터는 허용하지 않겠다는 의미, 틸드(~)는 4.18.x는 모두 허용하겠다는 의미다.
{"dependencies": {"express": "^4.18.1"}}
기타 npm 명령어
npm outdated
npm uninstall
npm ci # package-lock.json에 기반하여 엄격하게 버전통제된 설치를 수행
패키지 배포 및 삭제 프로세스
npm adduser
npm publish
npm unpublish <packagename> --force # only available for first 72 hours