npm (Node Package Manager) 은 Node.js의 패키지 관리자로,
Python에서 pip, Ruby에서 gem과 같이 웹 사이트에서 패키지를 설치하여 컴퓨터에 설치할 수 있게 해줍니다.
다른 사람이 배포한 npm 패키지를 설치하는 방법은 $ npm install [패캐지 이름]
이지만,
직접 npm을 배포하려면 어떻게 해야할까요?
npmjs에서 계정을 만듭니다.
$ npm login # npm 로그인
로그인을 통해 npmjs의 계정을 확인합니다.
$ npm whomai # 계정 확인
npmjs에 제대로 로그인했는지 계정을 확인합니다.
$ npm init # 패키지 설정
$ npm init -y # 패키지 자동으로 설정
package.json을 프로젝트에서 파일을 생성하거나 수정합니다.
name, version, description, main, script, keywords, author, license를 입력해주면 됩니다.
이 때 "repository" : [업로드 할 GitHub 레포지토리]"
를 넣으면 npm 리드미에 반영됩니다.
(단, npm init -y
를 하면 자동으로 package.json이 설정됩니다.)
패키지에 대해 작성하고,
npm의 리드미에 경우 README.md
npm 배포 시 포함하지 않을 파일에 대해 .npmignore
Git 버전 관리 시 포함하지 않을 파일에 대해 .gitignore
로 작성합니다.
해당 내용에 정답은 없지만, .npmignore
는 보통 아래 내용을 포함됩니다.
# 테스트 관련 폴더
test/
# 빌드 관련 폴더
dist/
build/
# 개발 관련 폴더
.gitignore
.eslintrc
README.md
# 환경 설정 파일
.env
# 등등 ...
.gitigrnoe
파일은 보통 아래 내용을 포함됩니다.
# Node 모듈
node_modules/
# 로그 피알
*.log
# 빌드 폴더
dist/
build/
# IDE 설정 파일
.idea/
.vscode/
# OS 관련 파일
.DS_Store
Thumbs.db
# 환경 설정 파일
.env
# 등등 ...
$ npm publish
를 통해 npm을 배포합니다.
이 후 npmjs에서 배포된 내용을 확인합니다.
배포를 잘못 진행했을 때 수정, 삭제, 업데이트가 필요합니다.
$ npm unpublish [패키지 이름] -f # 전체 삭제
$ npm unpublish [패키지 이름]@[버전] # 특정 버전 삭제
이와 같은 방법으로 이미 배포한 패키지를 삭제 가능합니다.
$ npm version patch -f # 패치 버전 업데이트 v???.???.(+1)
$ npm version minor -f # 마이너 버전 업데이트 v???.(+1).???
$ npm version major -f # 메이저 버전 업데이트 v(+1).???.???
이와 같은 방법으로 package.json의 버전 번호가 업데이트 되고
npm publish
를 통해 배포를 진행하면 됩니다.
Patch 버전 : 버그 수정이나 사소한 변경
Minor 버전 : 기능 추가, 기존 API와 호환
Major 버전 : 호환되지 않는 API 변경이 존재
를 기준으로 버전 관리를 하는 것이 좋으면 CHANGELOG.md
를 사용하여 기록하면 더욱 좋습니다.
npm 배포는 이름 중복, 배포 확인, 올바른 패키지 작성은 물론,
배포 이 후 버전 관리, 의존성 관리, README 작성, CHANGELOG 작성 등 사용하는 사람에게 편리하게 개발하여야합니다.
또한 추가로 commonJS와 ESModule에 대해 신경써서 개발해야 합니다.
- CommonJS : Node.js에서 사용되며 동기적으로 Module 로드
require
module.exports
사용- ESModule : 최신 Javascript 표준으로 비동기적으로 작동하며 브라우저와 Node.js 모두에서 사용가능
import
와export
사용