GitHub Packages에서 여러 패키지를 하나의 리포지토리에 등록

스스로 만든 패키지를 npm에 등록하는 것은 무서워서 어딘가 좋은 두는 곳 없을까 생각하면, GitHub가 npm등의 패키지의 두는 곳으로 사용할 수 있게 되어 있었다는 것을 알았다.

여기에서는, npm용의 패키지를 GitHub Packages를 사용해, GitHub상의 1개의 리포지토리에 등록하는 순서를 정리한다. (기본적으로는 "GitHub Packages 정보"의 순서에 따르면 된다)

GitHub 리포지토리의 PAT 생성



우선 「GitHub Packages 정보」의 「토큰 정보」을 참고로 패키지를 등록하고 싶은 리포지토리의 Personal Access Token(PAT)을 작성한다. 토큰의 범위(권한)는 "토큰 정보"에 쓰여진 것처럼 패키지를 등록하는데 필요한 것을 올바르게 설정해야 한다.

npm 설정



GitHub Packages에서 사용할 수 있도록 npm 설정 을 참고로 npm 의 설정인 .npmrc 로 패키지의 존재 여부를 나타내는 registry 를 설정한다.

GitHub Packages에서는, 패키지 게시\.npmrc)에 다음과 같은 설정을 추가한다.

.npmrc
@GitHubのユーザ名:registry https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=リポジトリのPAT

이 설정을 설정하면 범위에 따라 패키지의 등록 및 취득 대상을 변경할 수 있습니다.

package.json 설정



패키지의 등록처는 .npmrc 로 설정한다. GitHub의 리포지토리 1개당, 몇개의 패키지를 등록할지에 따라 쓰는 방법이 바뀌어 온다.

1 리포지토리에 1 패키지의 경우



Associating a scope with a registry 을 참고로, package.json 필드의 스코프=GitHub의 유저명, 패키지명=리포지토리명이 되도록(듯이) 설정한다.

package.json
{
  "name": "@GitHubのユーザ名/リポジトリ名",
  ...
}

1 리포지토리에 여러 패키지의 경우



패키지 게시 을 참고로 name 필드를 다음과 같이 설정한다.

package.json
{
  "name": "@GitHubのユーザ名/パッケージ名",
  "repository": {
    "type": "git",
    "url": "https://github.com/GitHubのユーザ名/リポジトリ名.git",
    "directory": "リポジトリ内でこのpackage.jsonが含まれるディレクトリ※"
  },
  ...
}
repoisitorynpm publish 매번 수행되므로 하나의 리포지토리에서 여러 패키지의 소스를 개발할 때 package.json가 여러 개 존재합니다. 따라서 리포지토리의 어디에 대상 패키지의 package.json가 있는지를 나타내기 위해 ※로 표시된 package.json를 사용한다.

예를 들어, 리포지토리에 3개의 패키지가 directory 디렉토리 이하에 packages ~ package1 와 같이 존재해, 그 바로 아래에 package3
  • packages
  • package1/package.json
  • package2/package.json
  • package3/package.json

  • package.jsonpackage1directory 를 설정한다.

    package.json
    {
      "name": "@GitHubのユーザ名/package1",
      "repository": {
        "type": "git",
        "url": "https://github.com/GitHubのユーザ名/リポジトリ名.git",
        "directory": "packages/package1"
      },
      ...
    }
    
    packages/package1 를 잘못해도 특별히 문제 없었으므로, 동작에 필요한 정보가 아닐지도 모른다.

    패키지 publish



    동일한 리포지토리에 여러 패키지 게시 을 참고로 npm의 CLI로 로그인한다. directory에서 각 범위에 대해 리포지토리에 대한 PAT를 구성한 경우 다음과 같이 로그인하여 .npmrc 명령이 GitHub 리포지토리에 패키지를 등록 할 수 있습니다.
    npm login
    > Username: GitHubのユーザ名
    > Password: リポジトリのPAT
    > Email: GitHubのメールアドレス
    

    로그인 할 수 있으면 npm가있는 디렉토리에서 package.json 명령을 실행하여 npm publish의 설정에 따라 패키지를 GitHub의 리포지토리에 등록합니다.

    패키지의 등록이 성공하면, GitHub의 리포지토리 일람이나 리포지토리의 화면에 패키지가 존재하는 것이 표시되게 된다.
    GitHub Packages에 인증하기

    좋은 웹페이지 즐겨찾기