Como Publicar seu Primeiro Package NPM
Tags: npm, javascript, tutorial
Published: 2020-04-05 22:24:43

o **npm** *(Node Package Manager)* é o maior repositório de código do mundo. Desenvolvedores de todos os continentes utilizam esta plataforma para compartilhar seus pacotes e módulos javascript. Você já imaginou como seria usar o Node.js sem *Express*, *Next.js* ou *Mongoose*? Difícil, né?😅😅

Além de todas estas funcionalidades, o npm pode ser um grade aliado dos desenvolvedores JS iniciantes que desejam demonstrar seus conhecimentos e habilidades ao mesmo tempo em que ajuda a comunidade.

Neste tutorial, mostrarei passo-a-passo como publicar seu primeiro package npm. Para este guia, assumo que você já possuí o Node.js/NPM instalados e conhece o básico de Javascript.

## Iniciando o Package

Primeiramente, devemos criar uma pasta onde ficará armazenado todo código-fonte do nosso package. 

Usando sua ferramenta de linha de comando (CMD, Bash, etc.), navegue até o diretório criado anteriormente e digite o comando:

```
npm init
```

Responda as perguntas solicitadas e será gerado o *package.json* da sua aplicação. 

**ATENÇÃO**: O npm não aceita que dois packages publicados possuam o mesmo nome, antes de dar um nome ao seu pacote [clique aqui](https://www.npmjs.com/) e pesquise se o nome que você deseja não encontra-se em uso.

Nome escolhido, abra o diretório no seu IDE/Editor de Texto favorito e vamos começar a criar a lógica do seu package.

![Homem digitando animado em um mac.](https://media.giphy.com/media/MGdfeiKtEiEPS/source.gif)

## Programando o Package

Para este exemplo, criarei um package que torna maiúscula a primeira letra de cada palavra em uma string.
Dentro do diretório do projeto, crie um arquivo *index.js* e cole o seguinte código:

```
function capitalizeString(str){
	str = str.split(" ");

    	for (var i = 0, x = str.length; i < x; i++) {
        	str[i] = str[i][0].toUpperCase() + str[i].substr(1);
    	}

    	return str.join(" ");
}

module.exports = { capitalizeString }

```

O código acima é tudo que precisamos para resolver o problema proposto anteriormente, a função ``capitalizeString()`` recebe uma string e retorna outra com as inciais de cada palavra em maiúscula.

Outro arquivo necessário é o *Readme.md*. Neste arquivo, escrito utilizando *markdow*, devem ser colocados todos os dados de apresentação do seu pacote, uma breve descrição, exemplo de uso, informações adicionais relevantes, etc. O NPM utilizará este arquivo na página de apresentação do seu package online.

Para este projeto usarei o seguinte *Readme.md*:

```
# Koala-String-Capitalize

NPM Package to Capitalize the First Letter of Each Word of a String. For educational Purposes.

## Instalation

 `` ` npm i koala-string-capitalize ` ``

## Usage

 `` `
 const ksc = require('koala-string-capitalize')

 console.log(ksc.capitalizeString("hello world!")) // "Hello World!"
 `` `
```

Com esta parte pronta, já podemos realizar as ultimas configurações para publicar nosso pacote.

## Cadastrando-se no npmjs.com

Para publicar seu pacote, é necessário possuir cadastro no [https://www.npmjs.com/](https://www.npmjs.com/). Registre-se, [clicando aqui](https://www.npmjs.com/signup) e confirme sua conta pelo link que será enviado para o seu email.

## Publicando o Package

Após verificar sua conta, navegue na linha de comando até o diretório do seu projeto e digite ``npm login``. Serão solicitados o nome de usuário, senha e e-mail cadastrados no passo anterior.

Finalmente, digite ``npm publish`` e pronto.😅

Se tudo der certo, você terá o seguinte retorno:
```
$ npm publish
npm notice
npm notice package: koala-string-capitalize@1.0.0
npm notice === Tarball Contents ===
npm notice 1.1kB LICENSE
npm notice 245B  index.js
npm notice 643B  package.json
npm notice 327B  README.md
npm notice === Tarball Details ===
npm notice name:          koala-string-capitalize
npm notice version:       1.0.0
npm notice package size:  1.4 kB
npm notice unpacked size: 2.3 kB
npm notice shasum:        a3e7a65aad3cd92b88d4b7281895883d033123e2
npm notice integrity:     sha512-G4zCTirrCMf3p[...]qfDrUIDc/asMw==
npm notice total files:   4
npm notice
+ koala-string-capitalize@1.0.0
```

Acesse sua conta no [https://www.npmjs.com/](https://www.npmjs.com/login) e lá estará seu pacote público para programadores do mundo inteiro. 

Para ver a minha versão deste package, [clique aqui](https://www.npmjs.com/package/koala-string-capitalize).

## Conclusão

Parabéns, você acaba de publicar seu primeiro pacote npm. Caso você tenha alguma dúvida ou comentário sobre o conteúdo acima, por favor, deixe nos comentários que estarei respondendo o mais breve possível.

Obrigado e até a próxima! 🖖🖖✌✌