1. npm 알아보기
npm(Node Package Manager) : 125만개의 패키지가 등록되어 있어 이러한 방대한 양의 패키지는 노드와 자바스크립트의 생태계를 견고하게 만들고, 게다가 대부분 오픈소스이기때문에 노드를 사용해 웹을 만들때 많은도움이 됨.
2. package.json으로 패키지 관리하기
같은 패키지라도 버전별로 기능이 다를 수 있기때문에 프로젝트를 설치할 때 패키지도 동일한 버전을 설치하지 않으면 문제가 생길 수 있음. 이때 설치한 패키지의 버전을 관리하는 파일이 바로 package.json.
→ 노드 프로젝트를 시작하기전에는 폴더 내부에 무조건 package.json부터 만들고 시작해야한다. npm에서 package.json을 만들수있는 명령어를 제공하고 있음.
[윈도우 환경]
npm init
[express 설치]
npm install express
[모듈 여러개 설치]
npm install [패키지1] [패키지2] [...]
ex) npm install morgan cookie-parser express-session
[개발용 패키지 설치] : 실제 배포시에는 사용되지 않고 개발중에만 사용
npm install --save-dev nodemon
※ npx
전역 설치를 기피하는 개발자도 있음. 전역 설치한 패키지는 package.json에 기록되지 않아 다시 설치할 때 어려움이 따르기 때문. 이러한 경우에 npx를 사용해준다.
npm install --save-dev rimraf
npx rimraf node_modules
→ 예시처럼 rimraf 모듈을 package.json의 devDependencies 속성에 기록한 후, 앞에 npx 명령어를 붙여 실행하면됨. 그러면 패키지를 전역 설치한 것과 같은 효과(명령어로 사용 가능)를 얻을 수 있음. 패키지가 package.json에 기록되었으므로 버전관리도 용이하다.
※ 명령어 줄여쓰기
npm install 명령어는 npm i로 줄여 쓸 수 있음. --save-dev 옵션은 -D로, --global 옵션은 -g로 줄여 써도됨.
3. 패키지 버전 이해하기
노드 패키지의 버전은 SemVer 방식의 넘버링을 따른다.(세자리) SemVer는 Semantic Versioning(유의적 버전)의 약어. 버전을 구성하는 세 자리가 모두 의미를 가지고 있다는뜻.
ex)
1. 0. 7
첫째 자리 : Major. 하위 호환이 되지 않는 변경사항.
major 버전이 0이면 초기 개발중 이라는 뜻. 1부터가 정식 버전을 의미한다. major버전은 하위 호환이 안될 정도로 패키지의 내용이 수정되었을 때 올림. ex) 1.5.0에서 2.0.0으로 올렸다는건 1.5.0버전 패키지를 사용하고 있던 사람들이 2.0.0으로 업데이트했을 때 에러가 발생할 확률이 크다는 뜻.
둘째 자리 : Minor. 하위 호환이 되는 변경사항.
minor 버전은 하위 호환이 되는 기능 업데이트를 할 때 올림. 버전을 1.5.0에서 1.6.0으로 올렸다면 1.5.0 사용자가 1.6.0으로 업데이트 했을때 아무 문제가 없어야한다.
셋째 자리 : Patch. 간단한 버그 수정.
새로운 기능이 추가되었다기보다는 기존 기능에 문제가 있어 수정한 것을 내놓을 때 patch 버전을 올림. 1.5.0에서 1.5.1처럼 업데이트 후 아무 문제가 없어야한다.
새 버전을 배포한 후에는 그 버전의 내용을 절대로 수정해선 안됨. 만약 수정 사항이 생기면 major버전, minor 버전, patch 버전 중 하나를 의미에 맞게 올려 새로운 버전으로 배포해야한다. → 배포된 버전 내용이 바뀌지 않아서 패키지 간의존 관계에 큰 도움이 되며, 특정 버전이 정상적으로 동작하고 같은 버전을 사용하면 어떠한 경우라도 정상적으로 동작 할 것.
4. 기타 npm 명령어
[업데이트 확인 필요한 경우 확인 할 때]
npm outdated
[업데이트 할때]
npm update
[해당 패키지 제거]
npm uninstall [패키지명]
5. 패키지 배포하기
[배포하기]
npm publish
[사용하고 있는 패키지 이름 확인해보기]
npm info [패키지명]
※ npm 배포시 주의사항
코드가 세상에 공개되는것이기 때문에 개인정보가 코드에 들어있지않은지 꼭 확인해볼것. 특히 다른 서비스와 연동하다가 실수로 서비스의 비밀 키를 넣어두는 경우가 많다고하는데, 다른 사람들이 그 키를 이용하여 과금을 유발 할 수도 있기 때문에 배포 전 반드시 꼭 확인하기.
참조 : Node.js 교과서(개정2판)
'node.js' 카테고리의 다른 글
[Node.js] #7 시퀄라이즈(Sequelize) (0) | 2021.11.18 |
---|---|
[Node.js] #6 익스프레스 웹 서버 만들기 (0) | 2021.11.15 |
[Node.js] #4 http 모듈로 서버 만들기(2) (0) | 2021.11.12 |
[Node.js] #3 http 모듈로 서버 만들기(1) (0) | 2021.11.12 |
[Node.js] #2노드의 기능 (1) | 2021.11.11 |