O npm é (Node Package Manager) é um gerenciador de pacotes padrão para ambiente em tempo de execução node.js.
O Npm permite que os desenvolvedores instalem, compartilhem e gerenciem pacotes.
Preparando package
É necessario configurar corretamente o package.json
npm init
Caso não possua o projeto ainda. Este comando irá guiá-lo através da criação do arquivo package.json com informações essenciais sobre o seu projeto.
Edite o package.json para incluir as informações relevantes sobre o seu pacote, como nome, versão, descrição, autor, licença, etc.
Exemplo para um projeto typescript exportação de build em Es module
{
"name": "@username/nome-do-pacote", // @organization/nome-do-pacote
"version": "1.0.0", // versão atual do pacote
"private": false,
"description": "Uma breve descrição do meu pacote", // breve descrição
"type": "module",
"types": "dist/index.d.ts", // tipagem
"scripts": {
"build:lib": "tsc -p tsconfig.lib.json && vite build", // script para build
"publish:lib": "npm publish", // script para publish
},
"exports": {
".": {
"import": "./dist/index.es.js",
"types": "./dist/index.d.ts"
},
},
"files": [
"dist"
],
"publishConfig": {
"access": "public"
},
"author": "Seu Nome",
"license": "MIT",
"dependencies": {
"alguma-dependencia": "^1.0.0"
}
}mais informações sobre package.json https://docs.npmjs.com/cli/v7/configuring-npm/package-json
É uma boa pratica ignorar os arquivos e diretorios que não devem ser incluidos no pacote exemplo:
.npmignore
node_modules
.git
.DS_StorePublicando o pacote
Conhecendo o Yalc
Antes de publicar seu pacote, é recomendável testá-lo publicando-o localmente. Para isso, podemos usar a ferramenta yalc.
Então você ja tem seu package buildado pronto pra publica-lo.
Crie sua conta npm
Lembre que o scope será seu user name caso você faça a publicação de forma publica, no privado o scope pega o nome da organização.
exemplo de scope @username/nome-do-pacote
Gere o Token na sua conta NPM

ps: se seu pacote for privado será necessario usar um token para instalação do pacote nos projetos em que você irá usar, sugiro criar um token read-only
Crie o arquivo .npmrc
//registry.npmjs.org/:_authToken=${NPM_TOKEN}Use o comando export para adicionar o token a variaveis de ambiente de seua maquina
export NPM_TOKEN=npm_gjBa_resto-do-tokenVale resaltar que a publicação segue os parametros do package.json, então toda vez que você criar uma release nova é necessario mudar a versão no package, existe alguns comandos para versão.
npm version patch # Para incrementos de patch
npm version minor # Para incrementos de minor version
npm version major # Para incrementos de major versionApós a configuração, você pode publicar o seu pacote executando:
npm publish
Pronto você publicou!
Publicando via CI
Voce pode criar um publicação via CI, utilizando o workflow do github actions
- Coloque o token na secret do github


- Arquivo publish.yml

# NPM Publish is the name for this action
name: NPM Publish
# This action will trigger on every release get created
on:
push:
tags:
- "v[0-9].[0-9]+.[0-9]+"
# Job will run on a ubuntu instance
jobs:
build:
runs-on: ubuntu-latest
steps:
# Checkout the code
- uses: actions/checkout@v2
# Setup node with version 12.x and NPM registry url
- uses: actions/setup-node@v1
with:
node-version: "18.x"
registry-url: "https://registry.npmjs.org"
- name: Install dependencies
run: npm install
- name: Publish the files to NPM
run: npm run publish:lib
# for publishing, npm need authorization. We add the NPM token to the environment which will take care of authorization to publish to the package
env:
CI: true
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}nesse exemplo é feito publish ao criar uma tag release no padrão "v[0-9].[0-9]+.[0-9]+"
lembrando que os comandos scripts devem ser feitos de acordo com seu projeto.
Após completar esses passos, tendo sucesso você poderá visualizar sua pacote/biblioteca no npm e instalá-la em seus projetos facilmente.
para mais informações https://docs.npmjs.com/cli/v7/commands/npm-publish?ref=
