npm 배포 방법

이도형·2024년 9월 14일
1
post-thumbnail

npm (Node Package Manager)Node.js의 패키지 관리자로,
Python에서 pip, Ruby에서 gem과 같이 웹 사이트에서 패키지를 설치하여 컴퓨터에 설치할 수 있게 해줍니다.

다른 사람이 배포한 npm 패키지를 설치하는 방법은 $ npm install [패캐지 이름]이지만,

직접 npm을 배포하려면 어떻게 해야할까요?

1. npm 계정 만들기

npmjs에서 계정을 만듭니다.

2. npm 로그인 및 확인

$ npm login		# npm 로그인

로그인을 통해 npmjs의 계정을 확인합니다.


$ npm whomai	# 계정 확인

npmjs에 제대로 로그인했는지 계정을 확인합니다.

3. 패키지 설정

$ npm init	   # 패키지 설정
$ npm init -y  # 패키지 자동으로 설정

package.json을 프로젝트에서 파일을 생성하거나 수정합니다.
name, version, description, main, script, keywords, author, license를 입력해주면 됩니다.
이 때 "repository" : [업로드 할 GitHub 레포지토리]"를 넣으면 npm 리드미에 반영됩니다.
(단, npm init -y를 하면 자동으로 package.json이 설정됩니다.)

4. 작성

패키지에 대해 작성하고,
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

# 등등 ...

5. 배포

$ npm publish

를 통해 npm을 배포합니다.

이 후 npmjs에서 배포된 내용을 확인합니다.

6. 배포 이 후 관리

배포를 잘못 진행했을 때 수정, 삭제, 업데이트가 필요합니다.

$ 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 모두에서 사용가능
    importexport 사용
profile
열심히 살고 싶습니다! 일하고 싶습니다 :)

0개의 댓글