npmjs에 등록하는것과 거의 동일한데, 장단점이 있습니다.
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}}