paint-brush
Como criar e publicar seu primeiro pacote NPM privadopor@yuraabharian
7,339 leituras
7,339 leituras

Como criar e publicar seu primeiro pacote NPM privado

por Yura Abharian1m2022/07/09
Read on Terminal Reader
Read this story w/o Javascript

Muito longo; Para ler

Neste artigo, quero mostrar como podemos criar facilmente nosso primeiro pacote npm privado. Com pacotes npm privados, você pode hospedar código que só é visível para você e para aqueles com acesso. Falaremos mais sobre isso. Vamos criar e publicar um pacote privado no GitHub, portanto, certifique-se de conhecer os pré-requisitos antes de iniciar este artigo. Falaremos sobre como usar GitHub Actions para gerenciar e usar código privado juntamente com código público.

Company Mentioned

Mention Thumbnail
featured image - Como criar e publicar seu primeiro pacote NPM privado
Yura Abharian HackerNoon profile picture

Neste artigo, quero mostrar como podemos criar facilmente nosso primeiro pacote npm privado .


Vamos criar e publicar um pacote privado no GitHub , portanto, certifique-se de conhecer os pré- requisitos antes de iniciar este artigo. Então vamos começar.


Pré-requisitos:



O que são pacotes npm privados e onde podem ser usados?


  • Com pacotes npm privados, você pode hospedar código que só é visível para você e para aqueles com acesso, permitindo que você gerencie e use código privado juntamente com código público em seus projetos.


Estrutura do Projeto


 math-lib/ --.github/ --workflows/ --main.yml --build/ this is autogenerated folder --src/ --app.ts --types/ --index.d.ts --.gitignore --package.json --tsconfig.json


Parte 1: Construindo um pacote npm privado


Etapa 1: inicie um projeto Node.js com TypeScript.


Observação: você pode aprender como fazer isso seguindo este artigo Como configurar um Node Express com TypeScript ou simplesmente clonar este repositório https://github.com/YuraAbharian/node-express-typescript


Etapa 2: agora vamos criar fluxos de trabalho do GitHub Actions.



Vamos adicionar algumas configurações:


 name: Node.js Private Package on: push: branches: - master jobs: publish-gpr: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: node-version: '14.x' registry-url: 'https://npm.pkg.github.com/' - run: npm install - run: npm run build - run: npm publish env: NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}


Nota : Lembre-se de GITHUB_TOKEN, falaremos mais sobre isso um pouco mais tarde


Passo 3: Vamos criar/atualizar o arquivo src/app.ts


 export function sum(a: number, b: number): number { return a + b; } export function minus(a: number, b: number): number { return a - b; } export function divide(a: number, b: number): number { return a / b; } export function multiple(a: number, b: number): number { return a * b; }


Passo 4: Agora precisamos declarar um módulo para nosso pacote


  • Crie um diretório de types na raiz do seu projeto


  • Crie um arquivo index.d.ts no diretório de types


Adicionar tipos de declaração para este módulo


 declare module "@GITHUB_USERNAME/PACKAGE_NAME" { function sum(a: number, b: number): number; function minus(a: number, b: number): number; function divide(a: number, b: number): number; function multiple(a: number, b: number): number; }


Observação:

- GITHUB_USERNAME é seu nome de usuário do github


- PACKAGE_NAME é o nome do seu pacote particular


Exemplo: "@yuraabharian/math-lib"


Etapa 5: vamos trabalhar no arquivo package.json


 { "name": "@GITHUB_USERNAME/PACKAGE_NAME", "version": "1.0.0", "description": "", "main": "./build/app.js", "author": "", "license": "ISC", "types": "./types/index.d.ts", "publishConfig": { "registry": "https://npm.pkg.github.com/" }, "repository": { "url": "git://github.com/GITHUB_USERNAME/PACKAGE_NAME.git" }, "scripts": { "build": "npx tsc" }, "devDependencies": { "@types/node": "^18.0.0", "typescript": "^4.7.4" } }


Exemplo: git://github.com/yuraabharian/math-lib.git (este será um link para seu repositório GitHub)


Observação: esses campos @GITHUB_USERNAME/PACKAGE_NAME são os mesmos da Etapa 4


Etapa 6: vamos configurar nosso ambiente de repositório antes de enviar o código


  • No Passo 2 eu pedi para você lembrar do GITHUB_TOKEN porque essa variável é muito importante.


  • Acesse o GitHub Repository - Settings


Repositório GitHub - Configurações



Etapa 7: vá para Secrets


Configurações - Segredos

Etapa 8: Actions abertas


  • Clique New repository secret


Adicionar GITHUB_TOKEN


Necessário: Siga por este link https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token para gerar um novo token.


Nota: Salve o GITHUB_TOKEN em outro lugar porque precisaremos deles na Parte 2 deste artigo .


Nota: Conceda apenas acesso write:packages para este token


escreva:pacotes



Etapa 9: agora vamos enviar nosso código para o GitHub


Etapa 10: abra o Repositório → Ações e você verá que seu pacote foi implantado


Ações



Etapa 11: Para encontrar seu pacote, acesse seu perfil do GitHub → Pacotes


Pacote


Conclusão da primeira parte: neste ponto você deve ver seu pacote implantado


Na segunda parte deste artigo, aprenderemos como instalar um pacote privado porque requer algumas ações, além npm install package .

Parte 2: Instalação e Teste

Etapa 1: configurar o projeto Node.js


Observação: você pode ver como fazer isso na Parte 1 → Etapa 1


Passo 2: Em seguida, na raiz do projeto, intsall seu pacote. O link para o seu pacote você pode pegar pelo perfil do GitHub → Packages → math-lib (este é o nome do seu pacote)


o pacote math-lib


Passo 3: Agora vá para o arquivo src/app.ts e atualize-o


 import express, {Application, Request, Response} from 'express'; import {sum, minus, multiple, divide} from '@yuraabharian/math-lib'; const app: Application = express(); const PORT: number = 3001; app.use('/sum', (req: Request, res: Response): void => { res.send(`RESULT: ${sum(5, 2)}`, ); }); app.use('/minus', (req: Request, res: Response): void => { res.send(`RESULT: ${minus(2, 2)}`); }); app.use('/multiple', (req: Request, res: Response): void => { res.send(`RESULT: ${multiple(12, 2)}`); }); app.use('/divide', (req: Request, res: Response): void => { res.send(`RESULT: ${divide(10, 2)}`); }); app.listen(PORT, (): void => { console.log('SERVER IS UP ON PORT:', PORT); });


Nota: Lembre-se de que estou importando math-lib do meu repositório @yuraabharian/math-lib para fazer seu modelo parecer @GITHUB_USERNAME/PACKAGE_NAME


Etapa 4: execute seu projeto npm start


 node-express-typescript % npm start > [email protected] start > npx tsc && node build/app.js SERVER IS UP ON PORT: 3001


Passo 5 : Vá para o seu navegador e abra http://localhost:3001/sum


/soma ponto final


Isso funciona, então agora vamos testar todos os métodos:



/endpoint múltiplo


/menos ponto final


/divide ponto final


Resumo: Neste artigo, criamos e testamos seu primeiro pacote npm privado, espero que tenha gostado do meu artigo. Se você tiver alguma dúvida, pode entrar em contato comigo por e-mail, LinkedIn ou nos comentários. Muitas felicidades