[npm] Github Package Registry에 등록하기

dev stefanCho·2022년 6월 1일
0

npm

목록 보기
8/8

npmjs에 등록하는것과 거의 동일한데, 장단점이 있습니다.

장점

  • GITHUB_TOKEN이 자동생성되므로 Settings > Secrets 에서 등록하지 않아도 된다.
  • 용량제한이 있지만, private을 무료로 사용할 수 있다. (이 부분 때문에 회사에서 사용해보기로 했습니다.)

단점

  • repository의 Owner가 다른경우, 설치되지 않습니다.

  • beta 라벨이 없습니다. npmjs에서는 beta 버전도 라벨이 별도로 있습니다. npm publish --tag beta로 출시하는 경우 beta로 인식은 합니다. (아래 이미지 참고)

아래이미지를 보면 npmjs에서는 beta tag가 별도로 관리되는 것을 알 수 있습니다.

npm publish로 출시하면, Latest version 라벨이 붙습니다. 아래 이미지 참고

참고사항

에러내용이 친절하지 않습니다. 거의 모든 에러가 404 혹은 로그인 에러로 뜹니다.
잘 안된다면 npm init 으로 새로 생성하는것을 추천합니다.

publish 오류는 아래의 사유로 발생할 수 있습니다.
1. name은 정확한 scope와 소문자로 구성되어 있어야합니다.
2. repository, homepage 같은 부분이 정확히 작성되어야 합니다.

package name과 repository name은 같지 않아도 상관없습니다.
따라서 하나의 repository에서 여러가지 package를 publish할 수 있습니다.
(다만 scope는 일치시켜야하는 것 같습니다.)

예시

아래 코드는 실제로 Publish를 성공한 코드입니다.

package.json

{
  "name": "@devstefancho/github-package-publish",
  "version": "1.0.0",
  "description": "Test for Publish",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/devstefancho/github-package-publish.git"
  },
  "author": "devstefancho",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/devstefancho/github-package-publish/issues"
  },
  "homepage": "https://github.com/devstefancho/github-package-publish#readme"
}

publish_gpr.yml

name: Node.js Package

on:
  release:
    types: [created]

jobs:
  publish-gpr:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: 16
          registry-url: https://npm.pkg.github.com/
      - run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
profile
Front-end Developer

0개의 댓글