* 프로그래머스, 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 5기 강의 수강 내용을 정리하는 포스팅.
* 원활한 내용 이해를 위해 수업에서 제시된 자료 이외에, 개인적으로 조사한 자료 등을 덧붙이고 있음.
📚 오픈소스 배포하기
📁 npm에 오픈소스 라이브러리 배포하기
📌 npm을 통한 오픈소스 배포
- npm은 JavaScript 패키지를 배포할 수 있는 대표적인 패키지 관리자이다.
- 라이브러리를 npm에 배포하려면 먼저 npm 계정을 생성해야 한다.
🔗 npm 공식 사이트
🛠 npm 배포 과정
npm 가입
- npm 공식 사이트에서 회원가입 진행
- 터미널에서 로그인
npm login
package.json 생성
- 라이브러리의 기본 정보를 포함하는 설정 파일
- npm init 명령어를 사용하여 절차에 따라 작성 가능
- 주요 필드:
- keywords: 해시태그처럼 기능하여 검색 최적화
- homepage: 라이브러리 공식 홈페이지 URL
- repository: GitHub 등의 저장소 정보
배포 시 제외할 파일 설정
- .npmignore 파일을 추가하여 특정 파일을 npm 배포에서 제외 가능
- 기본적으로 node_modules/ 폴더는 무시됨
- .gitignore에도 node_modules 추가 필수
배포 전 로그인 및 확인
npm whoami
패키지 배포
npm publish
- 실행하면 package.json 정보에 따라 패키지가 npm에 업로드됨
📌 배포 시 버전 변경 및 관리
🔹 버전 변경 및 설정
버전 확인 및 업데이트
npm version patch # 패치 버전 증가
npm version minor # 마이너 버전 증가
npm version major # 메이저 버전 증가
- --force 또는 --no-git-tag-version 옵션을 추가하여 강제 적용 가능
버전 정책 (Semantic Versioning)
v1.0.4 (major.minor.patch)
- Major: 하위 호환이 되지 않는 변경 사항
- Minor: 하위 호환이 되는 기능 추가
- Patch: 간단한 버그 수정
📌 npm 패키지 유지 및 관리
퍼블리시 접근 보안
- 패키지를 관리할 Maintainer 초대 가능
- 패키지 배포 접근 권한 설정 가능
패키지 삭제 (Unpublish)
npm unpublish <package_name>@<version>
- 배포 후 72시간 이내에만 삭제 가능
- 삭제 후 24시간 동안 재배포 불가능
- 삭제 조건:
- 협업자(Collaborator)가 없어야 함
- 최근 1주간 다운로드 횟수가 300회 이하
- 다른 패키지에서 의존성을 가지고 있지 않아야 함
버전 비활성화 (Deprecate)
npm deprecate <package_name>@<version> "이 버전은 사용하지 마세요"
📚 오픈소스 프로젝트 강의 나가는 말
📁 강의 마무리
📌 오픈소스 프로젝트 기여 시 주의점
- 연습용 PR은 본인 저장소에서만 진행해야 한다.
- 실무에서 운영 중인 오픈소스 프로젝트에 PR 연습을 하면 안 됨
- (예: Express.js 프로젝트에서 PR 스팸으로 인해 문제가 발생했던 사례)
📌 오픈소스 기여 마인드셋
- 쉬운 난이도부터 시작하여 성공 경험을 쌓고 점진적으로 도전 과제에 도전하자.
- 오픈소스 기여는 기여 여부보다 기여 과정에서 배우는 것이 중요하다.
- 기여 과정에서 얻을 수 있는 경험이 개발자로서의 성장에 큰 도움이 된다.
🚀 이제 직접 오픈소스 프로젝트에 기여하며 실전 경험을 쌓아보자!