Github 패키지 저장소 호스팅 (Package Registry)

Jiwon Youn·2021년 3월 3일

Github Package Registry 서비스는 현재 완전한 Public Access가 되지 않으므로
Github 계정이 Package Registry에 접근할 권한이 있어야 한다.

  1. Github 사용자 → Settings
  2. Developer settings
  3. Personal access tokens
  4. Generate new token
  5. write:packages, read:packages에 체크 ✓ (repo는 자동 체크)
  6. Generate token
  7. 생성된 토큰 복사 (넘어가면 다시 조회 불가)

❗️ 이후 터미널에서 vi ~/.npmrc로 토큰을 저장 (앞 단에 // 포함)

//npm.pkg.github.com/:_authToken=생성한 토큰

Publish

Nest로 새로운 프로젝트를 생성 후 index.js을 간단히 작성한다.

const print = () => {
  console.log('npm test.');
};

module.exports = {
  print,
};

배포할 프로젝트의 package.json을 수정한다.

{
  "name": "@jiwonyoun/npm-practice",
  "version": "0.0.3",
  "description": "npm-practice",
  "author": "jiwonyoun",
  "private": false,
  "license": "UNLICENSED",
  "keywords": ["jiwonyoun"],
  "repository": {
    "type": "git",
    "url": "https://github.com/jiwonyoun/npm-practice.git"
  },
  "main": "index.js",
  "files": ["index.js"],
  "publishConfig": {
    "registry": "https://npm.pkg.github.com/"
  },
  .
  .
  .
  • private: truefalse로 변경 (true일 시 publish 불가)
  • name 앞에 @조직이름/을 추가 (Git Repository 경로명 확인)
    예) @jiwonyoun/npm-practice (조직 이름에 대문자가 있다면 소문자로 변경)
  • description, author, license, keyword 필드에 기입
  • repository 필드 명시적으로 기입
    "url": "https://github.com/jiwonyoun/npm-practice.git"
    → 배포할 프로젝트의 Git URL
  • main, files 필드 기입
    main : 진입점 파일 (.js)
    files : 패키지에 포함될 파일
  • publishConfig 필드 기입
    "registry": "https://npm.pkg.github.com/"
    → 이 패키지는 npm 저장소가 아니라 Github Package Registry에 배포한다는 뜻

이후 git에 배포할 파일(index.js)와 package.jsonpush한다.

npm publish를 위해서는 저장소에 로그인을 해야하는데,
권한 설정이 우선되어야 한다.

$ npm login --registry=https://npm.pkg.github.com --scope=@조직이름

💡 이 때 Password는 위에서 생성한 Access Token을 입력한다.

package.json에서 version을 변경하고, 패키지 매니저의 publish 명령으로 배포한다. 특정 version으로 한 번 배포한 후에는 수정할 수 없으므로 신중히 배포한다.

$ npm publish

배포 완료


Package Install

위에서 생성한 Package를 Install 해볼 프로젝트를 새로 생성한다.
프로젝트 루트에 .npmrc를 생성하고 아래 내용을 작성한다.

@jiwonyoun:registry=https://npm.pkg.github.com/

package.json 파일에서 앞에 @jiwonyoun가 붙는 패키지에 대해서는 공식 npm 저장소 http://registry.npmjs.org 대신 Github Package Registry https://npm.pkg.github.com 에서 찾아서 다운로드 하겠다는 의미

Install은 일반 npm과 같이 설치 가능하다.

$ npm install --save @jiwonyoun/npm-practice

💡 이 때, 위에서 설정했던 ~/.npmrc에 토큰이 일치하지 않으면 error가 발생한다.


사용은 아래와 같이 한다.

index.ts

import { print } from '@jiwonyoun/npm-practice';

print();

(배포한 index.js에서 사용한 함수 이름 import)

결과

$ ts-node index.ts
npm test.

참고 문서 1 : https://www.kyungyeon.dev/posts/20
참고 문서 2 : https://musma.github.io/2019/09/30/github-package-registry.html

0개의 댓글