DEV Community

Cover image for Como publicar um pacote no npm: um guia passo a passo
Juliana Macêdo
Juliana Macêdo

Posted on

1

Como publicar um pacote no npm: um guia passo a passo

Publicar pacotes no NPM (Node package manager) não é apenas uma forma de compartilhar seu trabalho com outros desenvolvedores, mas também de se destacar na comunidade de desenvolvimento. Imagine criar uma solução reutilizável que possa ser integrada a diversos projetos pelo mundo todo, economizando tempo e esforço de outros programadores.

Neste artigo, você aprenderá, passo a passo, como configurar, publicar e manter seu próprio pacote no NPM, tornando suas contribuições acessíveis e aumentando sua visibilidade como desenvolvedor.

Pré-requisitos

Antes de começar, certifique-se de que tenha:

  • O NPM instalado. Você pode baixá-lo em nodejs.org ou utilizar o NVM (Node version manager).
  • Uma conta criada no npmjs.com

Execute os comandos abaixo no terminal para verificar que a instalação do Node.js e do NPM foram bem-sucedidas.

node -v
npm -v
Enter fullscreen mode Exit fullscreen mode

Se a instalação estiver correta, o terminal exibirá a versão de cada.
O resultado será parecido com o abaixo:

$ v20.18.0 # node -v
$ 10.8.2 # npm -v
Enter fullscreen mode Exit fullscreen mode

Configurando o projeto

Comece criando uma pasta com o nome que você deseja para o pacote. No meu caso escolhi "string-reverser-jm".

mkdir string-reverser-jm # cria a pasta via terminal
cd string-reverser-jm # acessa a pasta via terminal
Enter fullscreen mode Exit fullscreen mode

Inicialize o NPM:

npm init
Enter fullscreen mode Exit fullscreen mode

Ao executar o comando acima, o terminal fará algumas perguntas para criar o arquivo package.json.
Segue explicação de cada item que precisamos ter preenchido.

  • name: Um identificador exclusivo para o pacote.
  • version: Utilize versionamento semântico para indicar alterações.
  • description: Uma breve explicação sobre o que o pacote faz.
  • main: O arquivo do ponto de entrada, por exemplo, index.js.
  • keywords: Palavras-chave para categorizar e facilitar que outros desenvolvedores encontrem o pacote.
  • author: Adicione detalhes relevantes do autor.
  • license: A licença define como o código pode ser usado, modificado e distribuído por outros. A licença mais comum é a MIT, que é permissiva e permite grande liberdade de uso, desde que seja fornecido o aviso de direitos autorais original.

Caso termine as perguntas e o NPM tenha criado o arquivo sem alguma dessas informações, abra o arquivo criado em um editor e adicione o que estiver faltando.

Exemplo:

{
  "name": "string-reverser-jm",
  "version": "1.0.0",
  "description": "A simple utility to reverse strings, useful for demonstrations and small projects.",
  "main": "index.js",
  "scripts": {
    "test": "echo \"No test specified\" && exit 1"
  },
  "author": "Juliana Macedo <contact@starcoders.info> (https://www.starcoders.info)",
  "keywords": [
    "string",
    "reverse",
    "utility"
  ],
  "license": "MIT"
}

Enter fullscreen mode Exit fullscreen mode

Escrevendo o código

Crie o arquivo index.js na raiz do projeto.

function reverseString(str) {
  if (typeof str !== "string") {
    throw new TypeError("Expected a string as input");
  }
  return str.split("").reverse().join("");
}

module.exports = reverseString;

Enter fullscreen mode Exit fullscreen mode

Testando o pacote

Para testar o pacote antes de publicá-lo, vamos utilizar o comando npm link

No diretório do pacote, execute o comando:

npm link
Enter fullscreen mode Exit fullscreen mode

No projeto onde deseja testar o pacote, execute o comando:

npm link string-reverser-jm
Enter fullscreen mode Exit fullscreen mode

Importe e use o pacote no seu projeto de teste para garantir que está funcionando:

const reverseString = require("string-reverser-jm");
console.log(reverseString("Hello, world!")); // Output: '!dlrow ,olleH'
Enter fullscreen mode Exit fullscreen mode

Para remover os links criados, basta executar o comando npm unlink string-reverser-jm no diretório do projeto de teste e depois npm unlink no diretório do pacote.

Preparando o pacote para publicação

Primeiro, crie um repositório Git para o pacote e vincule-o ao NPM. Isso aumenta a transparência e confiança ao disponibilizar o código-fonte, facilita colaborações e contribuições da comunidade, e permite automação com CI/CD para um gerenciamento e manutenção mais eficientes.

Para vincular ao NPM, copie o endereço https do repositório e adicione-o ao package.json:

{
  "name": "string-reverser-jm",
  "version": "1.0.0",
  "description": "A simple utility to reverse strings, useful for demonstrations and small projects.",
  "main": "index.js",
  "scripts": {
    "test": "echo \"No test specified\" && exit 1"
  },
  "author": "Juliana Macedo <contact@starcoders.info> (https://www.starcoders.info)",
  "keywords": [
    "string",
    "reverse",
    "utility"
  ],
  "license": "MIT",
  "repository": {
    "type": "git",
    "url": "https://github.com/Jullymac/string-reverser-jm.git"
  }
}
Enter fullscreen mode Exit fullscreen mode
  • .gitignore: Crie um arquivo .gitignore para excluir pastas e arquivos, como node_modules e .env, do versionamento.
  • .npmignore: Crie um arquivo .npmignore para especificar quais arquivos e pastas não devem ser incluídos no pacote NPM.
  • README.md: Crie um arquivo com informações sobre o pacote.

Publicando o pacote

Faça login no NPM usando seus dados de acesso:

npm login
Enter fullscreen mode Exit fullscreen mode

Execute o comando abaixo para publicar o pacote:

npm publish
Enter fullscreen mode Exit fullscreen mode

Pronto, em breve o pacote estará disponível no registro do NPM!
https://www.npmjs.com/package/string-reverser-jm

Atualizando o pacote

Ao fazer atualizações ou correções de bugs, aumente o número da versão no package.json de acordo com o versionamento semântico utilizando um dos comandos abaixo:

npm version patch   # Para correções
npm version minor   # Para novas funcionalidades que são compatíveis com versões anteriores
npm version major   # Para alterações significativas, que podem não ser compatíveis com versões anteriores
Enter fullscreen mode Exit fullscreen mode

E depois, publique a versão atualizada:

npm publish
Enter fullscreen mode Exit fullscreen mode

Problemas frequentes:

  • Package Name Already Taken: Se a publicação falhar porque já existe um pacote com o mesmo nome, escolha outro nome, um que ainda não tenha sido usado.
  • Authentication Errors: Certifique-se que está logado e tem todas as permissões necessárias para publicar.
  • Version Conflicts: Se tentar publicar sem atualizar o número da versão, o NPM rejeitará sua publicação. Use npm version para aumentar a versão.

Buy me a coffee

Starcoders

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more