19-2 npm과 오픈소스 배포
(Node Package Manager) npm
자바스크립트 프로그래밍 언어를 위한 패키지 관리자.
자바스크립트 런타입 환경 Node.js의 기본 패키지 관리자.
// 패키지 등록을 위해서 가입이 되어있어야함.
mkdir (폴더 이름) // 폴더 이름으로 폴더 생성
cd (폴더 이름) // 위에서 생성한 디렉토리(폴더 이름)로 이동
npm init // 프로젝트 초기화 - package.json 생성 - 패키지 이름은 처음에 자동으로 '폴더 이름'으로 설정되어 있음
package name : 패키지 이름은 처음에 자동으로 '폴더 이름'으로 설정되어 있음
version : 초기값 (1.0.0) 으로 되어있는데 0.0.1 로 수정하면 0.0.1로 변경됨
description : 패키지에 대한 설명, 기능
entry point : 진입 파일. 패키지를 require/import 시 기본으로 불러오는 파일 ( 일반적으로 index.js 사용 )
test command : 테스트 자동화 시 사용
git repository : Git 저장소 URL. 버전 관리 주소. (연결 권장)
keywords : 키워드 목록. npm에서 검색시 사용됨. 태그같은 기능.
author : 작성자
license : 라이선스 (기본값 : ISC). (MIT, Apache 등 오픈소스 라이선스는 명확히 적는 것이 좋음)
Is this OK? (YES) : yes 입력시, 입력된 값들로 package.json 생성됨
이후 수정사항이 있을 경우 package.json에서 수정
배포, 업로드시 제외할 파일 설정
예시)
.npmignore
.gitignore
참고
gpt 설명 보충
.npmignore파일이 없으면 자동으로.gitignore를 참고해서 제외할 파일을 정합니다..npmignore파일이 있으면.npmignore내용만 적용됩니다.node_modules은 보통.gitignore와.npmignore둘 다에 포함해 두는게 일반적입니다.
package.json 과 package-lock.json의 차이
구분 package.json package-lock.json 목적 프로젝트 설정 및 의존성 선언 의존성 트리 고정 및 버전 잠금 작성자 개발자(직접 작성, 수정) npm이 자동 생성 및 관리 버전 지정 방식 버전 범위(semver, 예: ^1.0.0) 정확한 버전(예: 1.0.3) 포함 정보 주로 1차 의존성 모든 의존성(1차 + 하위 의존성) 중요성 의존성 관리 기본 환경 일관성 유지 필수 버전 관리 시점 개발자가 변경 패키지 설치 시 자동 변경
package.json: “나는 이 패키지가 필요해~ (버전 범위 포함)”라고 선언
package-lock.json: “내가 지금 이 버전을 설치했어, 앞으로도 이걸 써!” 라고 기록
VSC(visual studio code)에서 위와같이 패키지를 만들고, 제외 할 파일도 설정한 다음
터미널에 npm login 을 입력하면 로그인 할 수 있는 사이트가 열립니다.
메일로 전송된 로그인 인증 코드를 입력후 다시 VSC로 돌아가면 로그인이 된 것을 확인 가능합니다.
npm whoami : 터미널에 연결된 계정 확인
npm init -y : npm init으로 npm 프로젝트에 대한 기본 양식을 하나하나 작성을 하는데, -y 속성을 이용하여
기본값으로 설정된 package.json으로 만들 수 있습니다.
아까 위에서 직접 작성하고 저장하였으므로, 다시 기본값으로 덮어씌워지지는 않고, 입력했던 값들이 기본값으로 되어있으므로, 작성한 내용이 출력됩니다. (default값이 출력 x, 입력했던 내용 o)
gpt :
npm init -y를 실행하면 기존 파일을 덮어 쓸 수도 있어서 조심해야 합니다. 확인이나 편집이 필요할 경우package.json파일에서 편집하는 게 안전
npm publish
package.json에 정의된 정보를 기반으로 패키지를 업로드 합니다.
// 프로젝트의 루트 폴더에서 실행해야 합니다.
gpt 보충설명
자주 쓰는 옵션
옵션 설명
--access public 스코프 패키지(예: @myorg/mypkg)를 공개로 배포할 때 사용
--dry-run 실제로 배포하지 않고 어떤 파일이 포함되는지 미리보기
npm에 배포한 패키지를 삭제(취소)합니다.
npm unpublish my-package@1.0.0 //@ 뒤는 버전
npm unpublish my-package --force // 패키지 전체를 npm에서 제거 (복구 힘듬)
e.g.
npm unpublish sample@0.0.1 // 0.0.1 버전 제거
배포한 npm 페이지의 version 탭에서 삭제 된 것을 확인가능합니다.
제한사항
e.g.
처음으로 패키지를 생성해서 publish 한 다음 취소하려는 경우 => 버전이 0.0.1 밖에 없는데 해당 버전을 unpublish 하려고함 = 패키지 자체를 삭제하겠다는 의미와 동일하므로 --force 옵션을 사용해야함.