Como publicar um package npm de forma privada utilizando Github Packages

Recentemente, no meu trabalho, me deparei com a seguinte necessidade: publicar um pacote de maneira privada. Depois de avaliar algumas possibilidades, percebi que a melhor forma de fazer isso seria utilizando o GitHub Packages.

O que é o GitH…


This content originally appeared on DEV Community and was authored by Carlos Henrique

Recentemente, no meu trabalho, me deparei com a seguinte necessidade: publicar um pacote de maneira privada. Depois de avaliar algumas possibilidades, percebi que a melhor forma de fazer isso seria utilizando o GitHub Packages.

O que é o GitHub Packages?

O GitHub Packages permite que você armazene pacotes de diferentes tipos (como npm, Maven, Docker, etc.) diretamente no GitHub. Você pode torná-los públicos ou privados, dependendo da necessidade do seu projeto. Você pode conferir mais informações aqui.

Passo 1: Configurando o projeto e necessidades

Primeiro, é necessário que você tenha um repositório no GitHub onde o seu pacote será armazenado. Para garantir que o pacote seja privado, certifique-se de que o repositório é privado.

Passo 2: Criando o seu pacote

  1. Criando o package.json: Substitua <seu-usuario-ou-organizacao> pelo usuário ou organização desejada.
npm init --scope=@<seu-usuario-ou-organizacao>

Isso vai gerar um package.json com o campo name já formatado com o escopo. Utilizando o meu perfil do GitHub como exemplo:

{
  "name": "@carloshendvpm/meu-pacote",
  "version": "1.0.0",
  "description": "Meu pacote privado no GitHub Packages",
  ...
}

Passo 3: Configurando o registro para GitHub Packages

Agora, é preciso garantir que o npm saiba que você deseja publicar esse pacote no GitHub Packages, e não no registro público do npm. Para isso, adicione o campo publishConfig ao seu package.json:

"publishConfig": {
  "registry": "https://npm.pkg.github.com/"
}

Isso informa ao npm que ele deve usar o GitHub Packages como destino de publicação. O seu package.json deve ficar assim:

{
  "name": "@carloshendvpm/meu-pacote",
  "version": "1.0.0",
  "type": "module",
  "repository": {
    "url": "https://github.com/carloshendvpm/meu-pacote.git"
  },
  "dependencies": {
    ...
  },
  "devDependencies": {
    ...
  },
  "publishConfig": {
    "registry": "https://npm.pkg.github.com/"
  }
}

Passo 4: Utilizando GitHub Actions para publicar o pacote

Crie um diretório chamado .github/workflows dentro do seu projeto. E, dentro do diretório workflows, crie um arquivo publish.yml com o seguinte conteúdo:

name: Publish package to GitHub Packages
on:
  release:
    types: [published]
  workflow_dispatch:
jobs:
  build:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20.x'
          registry-url: 'https://npm.pkg.github.com'
          scope: '@carloshendvpm'
      - name: Install dependencies
        run: npm install
      - name: Publish package
        run: npm publish --access restricted
        env:
          NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Essa action será executada na adição de uma nova release. Isso pode ser alterado de acordo com sua preferência. Além disso, utilizei o workflow_dispatch, que permite executar essa action diretamente da interface do GitHub, manualmente. É importante salientar que o GITHUB_TOKEN é gerado automaticamente pelo GitHub. Você pode conferir mais sobre isso aqui.

Passo 5: Criar a nova release

Github Nova release

Preencha as informações de tag e crie a nova release. Isso acionará a execução da action.

Passo 6: Usando o pacote nos seus projetos

Antes de instalar o pacote, siga estas etapas:

  1. Crie um token de acesso pessoal no GitHub para autenticação com a API do GitHub e instalação do seu pacote. Vá em Configurações / Configurações de Desenvolvedor / Token de Acesso Pessoal e gere um novo token com a permissão de leitura.

  2. No projeto onde o pacote será utilizado, crie um arquivo chamado .npmrc na raiz do projeto.

  3. Adicione a seguinte configuração no seu arquivo .npmrc, substituindo <GITHUB_TOKEN> pelo token gerado anteriormente:

//npm.pkg.github.com/:_authToken=<GITHUB_TOKEN>
@organizationName:registry=https://npm.pkg.github.com
  1. Agora, você já pode instalar o pacote no seu projeto utilizando:
  • Via package.json:
"@carloshendvpm/meu-pacote": "1.0.0"
  • Via terminal:
npm install @carloshendvpm/meu-pacote@1.0.0

Conclusão

Espero ter ajudado de alguma forma. Em breve, pretendo trazer um tutorial completo sobre a criação de um package utilizando a Svelte Library. Se tiver alguma sugestão, não hesite em comentar ou me corrigir caso tenha notado algum erro.


This content originally appeared on DEV Community and was authored by Carlos Henrique


Print Share Comment Cite Upload Translate Updates
APA

Carlos Henrique | Sciencx (2024-09-12T00:05:16+00:00) Como publicar um package npm de forma privada utilizando Github Packages. Retrieved from https://www.scien.cx/2024/09/12/como-publicar-um-package-npm-de-forma-privada-utilizando-github-packages/

MLA
" » Como publicar um package npm de forma privada utilizando Github Packages." Carlos Henrique | Sciencx - Thursday September 12, 2024, https://www.scien.cx/2024/09/12/como-publicar-um-package-npm-de-forma-privada-utilizando-github-packages/
HARVARD
Carlos Henrique | Sciencx Thursday September 12, 2024 » Como publicar um package npm de forma privada utilizando Github Packages., viewed ,<https://www.scien.cx/2024/09/12/como-publicar-um-package-npm-de-forma-privada-utilizando-github-packages/>
VANCOUVER
Carlos Henrique | Sciencx - » Como publicar um package npm de forma privada utilizando Github Packages. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/09/12/como-publicar-um-package-npm-de-forma-privada-utilizando-github-packages/
CHICAGO
" » Como publicar um package npm de forma privada utilizando Github Packages." Carlos Henrique | Sciencx - Accessed . https://www.scien.cx/2024/09/12/como-publicar-um-package-npm-de-forma-privada-utilizando-github-packages/
IEEE
" » Como publicar um package npm de forma privada utilizando Github Packages." Carlos Henrique | Sciencx [Online]. Available: https://www.scien.cx/2024/09/12/como-publicar-um-package-npm-de-forma-privada-utilizando-github-packages/. [Accessed: ]
rf:citation
» Como publicar um package npm de forma privada utilizando Github Packages | Carlos Henrique | Sciencx | https://www.scien.cx/2024/09/12/como-publicar-um-package-npm-de-forma-privada-utilizando-github-packages/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.