Node.js 스터디 4주차
Node.js 교과서 5장 패키지 매니저를 공부!
5.1 npm 알아보기
node.js, javascript, react 등에서 사용하는 패키지매니저에는 크게 npm과 yarn이 있다.
두가지다 자바스크립트 패키지 매니저로, 많은 사용자를 보유하고 있다.
npm | yarn | |
npm사 | 제작사 | 페이스북 |
하나가 다 설치될 때까지 기다림 | 여러 패키지 설치 시 | 동시에 여러개 설치 (속도 빠름) |
package-lock.json | 잠금파일 (협업시 개발자들마다 설치 버전이 달라지는걸 방지하기 위해 설치 시점 버전으로 잠궈놓기 위함) |
yarn.lock파일 자동 생성 |
npm install - npm install --global |
설치 명령어 | yarn add - yarn global add |
npm update | 업데이트 명령어 | yarn upgrade |
+) init(package.json파일 생성) , run은 npm과 yarn모두 동일
5.2 package.json으로 패키지 관리하기
* package.json 파일은 프로젝트 정보, 의존성, 사용하는 패키지 정보 등등이 기록되어 있다.
{
"name": "npmtest",
"version": "1.0.0",
"description": "hello package.json",
"main": "index.js", // 자바스크립트 실행 파일 진입점
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1" //테스트 시 입력할 명령어
},
"author": "dayeon",
"license": "ISC"
}
참고한 포스팅
https://javascript.plainenglish.io/npm-vs-yarn-choosing-the-right-package-manager-a5f04256a93f
npm vs Yarn — Choosing the right package manager
Choose the right package manager for your project
javascript.plainenglish.io
npm install [패키지 이름]의 형태로 설치한다.
설치한 패키지는 package.json에서 버전과 함께 확인할 수 있다.
express를 설치하게 되면 express가 의존하는 패키지들도 node_modules안에 설치가 된다. 여러 패키지들이 의존관계를 구성하기 때문에 package.json이 필요하다. 또한 package-lock.json파일도 생성된다.
아래처럼 여러개를 한번에 설치할 수도 있다.
패키지 간단 소개
- morgan : 로그를 기록하는데 도움을 주는 패키지
- cookie-parser : 요청에 동봉된 쿠키를 해석해서 req.cookies객체로 만든다.
- express-session : 세션 관리용 패키지, 특정 사용자의 데이터 일시적 저장시 사용
- nodemon : 소스 코드가 바뀔 때마다 자동으로 노드 재실행
- rimraf : 리눅스나 맥의 rm -rf (파일/폴더 삭제 명령어)를 윈도우에서도 사용할 수 있게 만들어줌.
전역 설치 : 현재 폴더의 node_modules가 아닌, npm이 설치된 폴더에 설치한다.
-> install 뒤에 --global옵션을 넣어주면 된다.
package.json에 기록되지는 않으므로 npx사용해서 설치하기도 한다.
5.3 패키지 버전 이해하기
- SemVer 방식의 버전 넘버링
-> Semantic Versioning(유의적 버전)의 약어로, 버전을 구성하는 세 자리가 모두 의미를 가지고 있다는 뜻이다.
EX ) 1.2.3
-> 1 : major 버전, 하위 호환이 되지 않는 변경사항. 업데이트시 이전 버전 사용자의 에러 발생확률 높다.
-> 2 : minor 버전, 하위 호환이 되는 기능 업데이트
-> 3 : patch 버전, 기존 기능의 버그 등을 수정
npm i express@^1.1.1 | 1.1.1이상, 2.0.0 미만까지 설치(minor버전까지만) |
npm i express@~1.1.1 | 1.1.1이상, 1.2.0 미만까지 설치(patch버전까지만) |
npm i express@latest | 안정된 최신 버전의 패키지 설치, @x와 동일 |
npm i express@next | 가장 최근 배포판, 안정되지 않은 버전 설치가능성 있음 |
5.4 기타 npm 명령어
- npm outdated : 업데이트 할 수 있는 패키지 확인
-> current와 wanted가 다른 경우에 업데이트 필요
-> latest는 최신 버전이지만 package.json과 버전 범위 다르면 설치 X
- npm uninstall [패키지명] : 패키지 제거 (== npm rm [패키지명])
- npm search [검색어] : 패키지 검색
- npm info [패키지명] : 패키지 세부 정보 파악
- npm adduser : npm 로그인을 위한 명령어, 패키지 배포시에만 필요
- npm publish : 패키지 배포
- npm unpublish [패키지명] --force : 배포한 패키지 삭제(72시간 이내만 삭제 가능)