진취적 삶
05 패키지 매니저 본문
npm : 많은 코드를 미리 작성해서 그 코드를 다른 사람이 볼수있게 공개놓은곳
5.1 npm 알아보기
npm은 node package manager 의 약자
npm에 업로드된 노드 모듈을 패키지라고 한다.
5.2 package.json으로 패키지 관리하기
설치한 패키지의 버전을 관리하는 파일이 바로 pacakge.json
노드 프로젝트를 시작하기 전에는 폴더 내부에 무조건 package.json부터 만들고 시작해야한다.
npm init 으로 package.json 만들기
라이선스 : ISC,MIT나 BSD 라이선스를 가진 패키지는 사용한 패키지와 라이선스만 밝히면 자유롭게 사용가능
아파치 라이선스 패키지는 사용은 자유롭지만 특허권에 대한 제한이 포함
GPL 같은경우는 배포할 때 자신의 패키지도 GPL로 배포하고 소스코드고 공개해야함
{
"name": "npmtest",
"version": "0.0.1",
"description": "hello package.json",
"main": "index.js",
"scripts": {
"test": "echo \\"Error: no test specified\\" && exit 1"
},
"author": "suhaHwang",
"license": "ISC"
}
script 부분은 npm 명령어를 저장해두는 부분이다. npm run[스크립트 명령어]를 입력하면 해당 스크립트가 실행
PS C:\Users\suha hwang\Desktop\NodeJs\05> npm run test
npmtest@0.0.1 test echo "Error: no test specified" && exit 1
vulnerability
패키지를 설치할 때 found 0 vulnerabilities 또는 [숫자][심각도] severity vulnerability 라는 문장이 출력
npm은 패키지를 설치할때 패키지에 있을수 있는 취약점을 자동으로 검사
npm audit 은 패키지의 알려진 취약점을 검사할수 있는 명령어 이다 .
프로젝트 이름과 설치하는 패키지의 이름을 달라야 한다 .
npm으로 패키지를 설치,수정,삭제할때마다 패키지들 간의 정확한 내부 의존 관계를 package-lock.json에 저장한다. package.json은 직접 설치한 패키지를 기록하는 파일
package-lock.json은 패키지 간의 의존 관계를 명시한 파일
개발용 패키지는 실제 배포시에는 사용되지 않고 ,개발중에만 사용되는 패키지
npm install --save-dev [패키지][...]로 설치
개발자용 패키지 따로 관리
"devDependencies": {
"nodemon": "^2.0.22"
}
peerDependencies 가 있을경우 서로 충돌하는 패키지를 같이 설치하지 않는것이 최선이다.
npm에는 전역 설치 옵션이 있다. 전역으로 설치할경우 콘솔의 명령어로 사용이 가능하다. 전역 설치를 했다고 해서 패키지를 모든 고셍서 사용한다는 뜻은 아니다.
node_modules는 npm install 언제든지 설치 가능 package.json에 설치한 패키지 내역이 들어가있으니깐
실제 서비스를 배포할떄는 npm i 대신 npm ci 명령어를 사용해서 package-lock.json에 적힌대로 설치
전역 설치한 패키지는 package.json에 기록되지 않아 다시 설치할때 어려움을 겪는다.
npm install --save-dev rimraf
npx rimraf node_modules
node_modules 내부 수정 하기
node_modules 를 수정한후 npm i 을 입력하게 되면 수정한 내용이 초기화 된다.
영구적으로 반영해주는 patch-package 패키지가 있다.
5.3 패키지 버전 이해하기
노드 패키지와 노드 버전은 세자리이다. SemVer 방식의 넘버링을 따르고 있다.
SemVer : Semantic Versioning 의 약어이다. 버전을 구성하는 세자리가 모두 의미를 갖고있다는 뜻
첫번째 자리: 메이저 버전 0이면 초기 개발중 1부터는 정식 버전
두번째 자리:마이너 버전 하위호완이 되는 기능 업데이트를 할때 올린다.
세번째 자리 : 패치 버전 기존 기능에 문제가 있어 수정한것을 내놓을때 패치버전을 올린다.
의존하는 패키지의 메이저 버전이 업데이트되면 기존 코드와 호환되지 않을 가능성이 높다 .
마이너나 패치 버전은 안심하고 업그레이드 가능
^ 기호는 마이너 버전까지만 설치하거나 업데이트 한다.
npm i express@^1.1.1 이라면 1.1.1 이상부터 2.0.0 미만 버전까지 설치
@latest 는 안정된 최신 버전의 패키를 설치 npm i express@latest
@next는 가장 최근 배포판 사용 가능 하지만 안정되지 않은 알파나 베타 버전의 패키지를 설치할수도 있다.
5.4 기타 npm 명령어
- npm outdated : 업데이트 할수 있는 패키지 확인
- npm uninstall [패키지 이름] :해당 패키지 제거
- npm search[검색어] : 패키지 검색
- npm info[패키지 이름] : 패키지의 세부사항 확인
- npm version[버전] 원하는 버전의 숫자를 넣으면 1올릴수 있다.
npm version 5.3.2 , npm version minor
- npm deprecate [패키지 이름][버전][메시지] : 해당 패키지 설치할때 경고메시지 다른 사용자들이 버그가 있는 버전의 패키지 설치할때 경고메시지 출력
- npm publish :자신이 만든 패키지 배포
- npm unpublish : 배포한 패키지를 제거
npm publish할때 패키지 이름은 중복이 안되는것로 해야한다.
중복한 버전으로 올리면 안되니깐 npm version patch 사용
npm version patch 쓰먄 세번째 자리 수 하나 올라간다.
npm unpublish [패키지네임] --force 을이용해서 패키지 삭제 가능
패키지 삭제는 72시간 이내에 해야한다.
주의 사항
npm 배포는 세상에 공개하는것이기에 개인정보가 코드에 들어있지 않은지 꼭 확인해야한다.
인터넷 도메인 주소를 판매 목적으로 선점하는 행위와 다를바가 없는 패키지 이름 선정은 하지말자
'개발 도서 > Node.js 교과서' 카테고리의 다른 글
07 MySQL (0) | 2023.07.14 |
---|---|
06 익스프레스 웹 서버 만들기 (0) | 2023.07.14 |
04 http 모듈로 서버 만들기 (0) | 2023.07.14 |
03 노드 기능 알아보기 (0) | 2023.07.14 |
02 알아둬야 할 자바스크립트 (0) | 2023.07.14 |