Table of Content
이 글은 Node.js 교과서(조현영 저)
라는 책으로 공부한 내용을 정리한 글입니다.
package.json으로 패키지 관리
package.json
파일은 설치한 패키지의 버전을 관리하는 파일- 프로젝트를 시작하기 전에
package.json
파일을 만들고 시작하는 것이 좋음 package.json
파일을 만드는 명령어:npm init
패키지 정보
package name
: 패키지 이름version
: 패키지 버전entry point
: 자바스크립트 실행 파일 진입점test command
: 테스트 명령어git repository
: Git 저장소 주소keyword
: https://npmjs.com 에서 사용할 패키지 검색어license
: 패키지 라이선스- ISC, MIT, BSD: 사용한 패키지와 라이선스만 밝혀주면 자유롭게 사용 가능
- Apache: 패키지 사용은 자유롭지만 특허권 제한이 포함됨
- GPL: 자신의 패키지도 GPL도 배포하고 소스코드도 공개해야 함
scripts
- 생성된
package.json
파일 내 scripts 부분은 npm 명령어를 저장해두는 부분 - 콘솔에서
npm run [SCRIPT_COMMAND]
를 입력하면 해당 스크립트가 실행됨"scripts": { "test": "echo 'Hello World!'", "start": "echo 'Start!'", "hello": "echo '안녕요?ㅎ'" }
- scripts의 test 부분은
npm test
또는npm run test
명령어로 실행할 명령어 지정 - scripts의 start 부분도
npm start
또는npm run start
명령어로 실행할 명령어 지정 - scripts의 hello 부분은
npm run hello
명령어로 실행할 명령어 지정
- scripts의 test 부분은
패키지 설치
- 패키지를 설치 명령어:
npm install [PACKAGE_NAME]
- 여러 패키지 설치하 명령어:
npm install [PACKAGE_NAME_1] [PACKAGE_NAME_2] ... [PACKAGE_NAME_n]
패키지 설치 시 생성되는 폴더 및 파일
node_modules
: 설치된 패키지가 저장된 폴더package.json
: 설치한 패키지의 버전(의존성)이 dependencies 속성에 저장됨package-lock.json
: 패키지를 설치, 수정, 삭제할 때마다 내부 의존 관계 정보가 저장되는 파일node_modules
폴더를 날려도 package.json 파일과 package-lock.json 파일이 남아 있는 경우npm install
명령어를 실행하면 패키지가 다시 설치됨node_modules
폴더는 따로 보관할 필요가 없음.- Git에서도
node_modules
폴더는 커밋하지 않음
npm에 등록되지 않은 패키지 설치
명령어: npm install [URL]
개발용 패키지 설치
- 실제 배포 시에는 사용하지 않는 개발용 패키지 설치 명령어:
npm install --save-dev [PACKAGE_NAME]
명령어로 설치합니다. - 이렇게 설치된 패키지는
package.json
파일의devDependencies
속성에 패키지의 버전(의존성)이 저장됨
패키지 전역 설치
- 명령어:
npm install --global [PACKAGE_NAME]
- 패키지를
node_modules
폴더에 설치하는 것이 아님 - npm이 설치되어 있는 폴더에 전역 설치
- 이 경우 콘솔 커맨드로 사용할 수 있음
- 전역 설치한 패키지는
package.json
파일에 기록되지 않음- 패키지를 다시 설치할 때 어려움이 따를 수 있음
명령어 줄여 쓰기
npm install
->npm i
--save-dev
->-D
--global
->-g
패키지 버전
- 모든 노드 패키지들은 세 자리로 이루어진 SemVer(Semantic Versioning, 유의적 버전)을 따름
- SemVer의 구성:
major.minor.patch
major 버전
- 하위 호환이 안 될 정도로 패키지가 수정되었을 때 바뀜
- 주로 0이면 초기 개발 중, 1부터는 정식 버전
- 예: 1.5.0 버전 -> 2.0.0 버전
- 1.5.0 버전 패키지 사용자들이 2.0.0 버전으로 업데이트 했을 때 에러가 발생할 확률이 큼
minor 버전
- 하위 호환이 되는 기능 업데이트 시 바뀜
- 예: 1.5.0 버전 -> 1.6.0 버전
- 패키지 업데이트 시 기능적으로 아무 문제가 없어야 함
patch 버전
기존 기능에 문제가 있어 패키지를 수정했을 때 바뀜
기호
- package.json 파일 내에 명시된
^
,~
,>
,<
같은 기호는 패키지 설치 또는 업데이트 시 어떤 버전을 설치해야 하는지를 명시^
는 minor 버전까지만 설치 또는 업데이트- 예:
^1.1.1
은 1.x.x 버전을 설치. 2.0.0 이상의 버전은 설치하지 않음. ~
는 patch 버전까지만 설치 또는 업데이트- 예:
~1.1.1
은 1.1.x 버전을 설치. 1.2.0 이상의 버전은 설치하지 않음. - 부등호 기호
>, <, >=, <=, =
는 초과, 미만, 이상, 이하, 동일. - 예:
>1.1.1
은 1.1.1 버전보다 높은 버전을 설치.
~
보다^
가 많이 사용됨- minor 버전까지는 하위 호환이 보장되기 때문
@latest
또는@x
: 항상 최신 버전의 패키지를 설치할 것을 명시- 예:
npm i express@latest
또는npm i express@x
- 예:
기타 npm 명령어
업데이트할 수 있는 패키지 확인
npm outdated
- Current와 Wanted가 다르면 업데이트가 필요한 경우임
패키지 제거
npm uninstall [PACKAGE_NAME]
또는 npm rm [PACKAGE_NAME]
- 이 때 패키지가
node_modules
폴더와package.json
파일에서 사라짐
npm 패키지 검색
npm search [SEARCH_WORD]
package.json
의 keywords 속성이 여기에 사용됨
npm 로그인
npm adduser
- 패키지를 배포할 때 사용
- 사전에 npm 공식 사이트에서 계정을 생성해야 함
로그인한 사용자 확인
npm whoami
로그아웃
npm logout
package.json
파일의 버전 올리기
npm version [VERSION]
- 예: 패키지 버전을 5.3.2로 설정:
npm version 5.3.2
- minor 버전 하나 올리기:
npm version minor
해당 패키지를 설치할 때 경고 메시지를 띄우게 하기
npm deprecate [PACKAGE_NAME][VERSION]
입니다.
- 자신의 패키지에만 이 명령어를 적용할 수 있음
패키지 배포
npm publish
배포한 패키지 제거
npm unpublish
- 의존성 관계 때문에 24시간 이내에 배포한 패키지만 제거 가능
이 외의 명령어
http://docs.npmjs.com의 CLI Commands 참고