반응형
5.1 npm 알아보기
🌕 NPM(Node Package Manager)
- 노드의 패키지 매니저
- 다른 사람들이 만든 소스 코드들을 모아둔 저장소
- 남의 코드를 사용하여 프로그래밍 가능
- 이미 있는 기능을 다시 구현할 필요가 없어 효율적
- 오픈 소스 생태계를 구성중
5.2 package.json으로 패키지 관리하기
🌕 package.json
- 현재 프로젝트에 대한 정보와 사용 중인 패키지에 대한 정보를 담은 파일
- 같은 패키지라도 버전별로 기능이 다를 수 있으므로 버전을 기록해두어야 함
- 동일한 버전을 설치하지 않으면 문제가 생길 수 있음
- 노드 프로젝트 시작 전 package.json부터 만들고 시작함(npm init)
🌕 package.json 속성들
- package name: 패키지의 이름, package.json의 name 속성에 저장
- version: 패키지의 버전, npm의 버전은 다소 엄격하게 관리
- entry point: 자바스크립트 실행 파일 진입점, 보통 마지막으로 module.exports를 하는 파일 지정, package.json의 main 속성에 저장
- test command: 코드를 테스트할 때 입력할 명령어, package.json scripts 속성 안의 test 속성에 저장
- git repository: 코드를 저장해 둔 Git 저장소 주소를 의미, 나중에 소스에 문제가 생겼을 때 사용자들이 이 저장소에 방문해 문제를 제기할 수도 있고, 코드 수정본 업로드 가능, package.json의 repository 속성에 저장
- keywords: 키워드는 npm 공식 홈페이지(https://npmjs.com)에서 패키지를 쉽게 찾을 수 있게 해 줌, package.json의 keywords 속성에 저장
- license: 해당 패키지의 라이선스 추가
🌕 npm 스크립트
- npm init이 완료되면 폴더에 package.json이 생성됨
- npm run [스크립트명]으로 스크립트 실행
🌕 패키지 설치하기
- npm install [패키지명]으로 패키지 설치
- npm install [패키지명1] [패키지명2] [패키지명3] ...으로 여러 패키지 동시에 설치
- package.json에 기록됨 (dependencies에 express 이름과 버전 추가됨)
🌕 node-modules
- npm install 시 node_modules 폴더 생성
- 내부에 설치한 패키지들이 들어 있음
- express 외에도 express와 의존 관계가 있는 패키지들이 모두 설치됨
- package-lock.json도 생성되어 패키지 간 의존 관계를 명확하게 표시함
🌕 개발용 패키지
- npm install --save-dev 패키지명 또는 npm i -D 패키지명
- devDependencies에 추가됨
🌕 npm ci
- npm i를 할 때마다 package.json과 package-lock.json이 변할 수 있음
- 배포 시에는 npm ci로 배포하기
- node_modules는 git 같은 버전 관리 시스템에 커밋할 필요가 없음
- npm i나 npm ci를 하면 동일하게 복구됨
🌕 글로벌(전역) 패키지
- npm install --global 패키지명 또는 npm i -g 패키지명
- 모든 프로젝트와 콘솔에서 패키지를 사용할 수 있음
- 예제는 rm –rf(리눅스의 삭제 명령)를 흉내 내는 rimraf 패키지의 글로벌 설치
- npx로 글로벌 설치 없이 글로벌 명령어 사용 가능
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 명령어
- 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시간 내에만 가능)
- 기타 명령어는 https://docs.npmjs.com의 CLI Commands에서 확인
5.5 패키지 배포하기
🌕 패키지 배포 순서
1. npm 회원가입
2. 배포할 패키지 작성
3. npm version 입력
4. npm publish 입력
🌕 배포 취소하기
- 24시간 내에 npm unpublish 패키지명 --force 입력
출처
Node.js 교과서 개정 3판(조현영)
반응형
'WINK-(Web & App) > Express.js (Node.js) 스터디' 카테고리의 다른 글
[2023 백엔드 스터디] 성정규 #1주차 - 2장, 알아두어야 할 자바스크립트 (1) | 2023.05.04 |
---|---|
[2023 백엔드 스터디] 성정규 #1주차 - 1장.노드 시작하기 (0) | 2023.05.04 |
[2023 백엔드 스터디] 이지원 #2주차 - 6.1~6.2장 Express 웹 서버 만들기 (0) | 2023.05.02 |
[2023 백엔드 스터디] 목진협 #2주차 - 6.3~6.5장 Express 웹 서버 만들기 part2 (0) | 2023.05.01 |
[2023 백엔드 스터디] 김민선 #1주차 - 4장.HTTP 모듈로 서버 만들기 (1) | 2023.04.24 |