DEV Community

Cover image for Não se preocupe mais com o package manager do seu projeto NodeJS
Marco Ollivier
Marco Ollivier

Posted on • Edited on

5 1 1

Não se preocupe mais com o package manager do seu projeto NodeJS

Eu que venho de outras tecnologias como Go, Clojure e Java, as vezes fico um pouco irritado com a quantidade de alternativas que são usadas de maneira tão ampla no universo NodeJS. Pra esse post específico eu ilustro com gerenciadores de pacote... meu deus... é npm, é yarn, é pnpm.
Parece que cada dia aparece um novo.

(tá... não é pra tanto, mas eu quero fazer um drama pra justificar o post)

Mas fazendo aqui um mea-culpa, talvez isso seja um problema mais meu do que da tecnologia em si, já que até hoje minha memória muscular digita no terminal lein lint:fix em vez de yarn lint:fix ou qualquer outro comando que realmente funcione pra projetos Node.

(pra quem não entendeu, lein é de Leiningen, o gerador de pacotes que eu usava pra trabalhar com Clojure)

Mas meus problemas acabaram. Esses dias scrollando alguma rede social por aí, chegou ao meu conhecimento o ni. Mas o que seria o Ni? Um novo gerador de pacotes? Não, mas ele vai acabar de vez com meus problemas em relação a projetos diferentes com gerenciadores diferentes.

Image description

O Ni

É tão simples usar o Ni, que escrever sobre ele também não demanda um texto muito grande.

Basicamente é uma ferramenta desenvolvida pra você que tem vários projetos e, eventualmente, cada um com um package manager. O Ni simplesmente vai abstrair isso pra você e você pode passar a se preocupar apenas com um único padrão de comandos.

O Ni dá suporte a npm, yarn,pnpme bun e com apenas um conjunto de comandos você trabalha com qualquer projeto que use um desses.

Por exemplo: se eu quero adicionar um novo pacote no meu projeto Node, mas apenas no contexto de desenvolvimento, pra cada um dos geradores de pacotes acima, eu teria essas opções abaixo:

# npm i @types/node -D
# yarn add @types/node -D
# pnpm add -D @types/node
# bun add -d @types/node
Enter fullscreen mode Exit fullscreen mode

Se você tem o Ni configurado na sua máquina, basta executar o comando ni @types/node -D e ele vai identificar qual o gerenciador de pacotes você tá usando e encontrar qual desses comandos ele deveria executar por debaixo dos panos.

Só por isso o Ni já se justifica pra mim, mas além disso, ele também é uma CLI bem interativa. O que pra mim é muito interessante quando estou tentando executar um projeto que eu ainda não conheço muito bem.

Por exemplo: pra eu rodar algum comando que está configurado dentro do meu package.json basta eu rodar nr (ni run) e ele vai listar pra mim todos os comandos de scripts disponíveis nos scripts do arquivo em um menu navegável pra ajudar na execução.

Image description

O Ni também tenta te ajudar na repetição de comandos. Se você executar o comando nr - ele vai executar o último comando rodado. No caso, se eu rodei um nr start:dev, na vez seguinte eu posso apenas executar o nr - que ele vai executar o start:dev pra mim.

E aqui se eu não te convenci, não sei mais como posso fazer isso, mas se curtiu, instalar também é absurdamente simples. Basta apenas executar o comando

$ npm i -g @antfu/ni
Enter fullscreen mode Exit fullscreen mode

E se quiser olhar como o projeto foi construído e até mesmo colaborar com o projeto, o Github é esse aqui.

GitHub logo antfu / ni

💡 Use the right package manager

ni

npm i in a yarn project, again? F**k!

ni - use the right package manager


npm i -g @antfu/ni

npm · yarn · pnpm · bun


ni - install

ni
# npm install
# yarn install
# pnpm install
# bun install
Enter fullscreen mode Exit fullscreen mode
ni vite

# npm i vite
# yarn add vite
# pnpm add vite
# bun add vite
Enter fullscreen mode Exit fullscreen mode
ni @types/node -D

# npm i @types/node -D
# yarn add @types/node -D
# pnpm add -D @types/node
# bun add -d @types/node
Enter fullscreen mode Exit fullscreen mode
ni --frozen

# npm ci
# yarn install --frozen-lockfile (Yarn 1)
# yarn install --immutable (Yarn Berry)
# pnpm install --frozen-lockfile
# bun install --no-save
Enter fullscreen mode Exit fullscreen mode
ni -g eslint

# npm i -g eslint
# yarn global add eslint (Yarn 1)
# pnpm add -g eslint
# bun add -g eslint

# this uses default agent, regardless your current working directory
Enter fullscreen mode Exit fullscreen mode

nr - run

nr dev --port=3000
Enter fullscreen mode Exit fullscreen mode

Conclusão

Pra pessoas como eu que trabalho em várias frentes - trabalho, voluntariado, comunidade etc - ter uma ferramenta que me ajuda em coisas pequenas que não deveriam tomar mais do que alguns poucos segundos faz muita diferença e por isso eu curti tanto a proposta do Ni. Espero que, de alguma forma, esse post também ajude você a ganhar um pouquinho mais de produtividade.

Image of Datadog

The Essential Toolkit for Front-end Developers

Take a user-centric approach to front-end monitoring that evolves alongside increasingly complex frameworks and single-page applications.

Get The Kit

Top comments (0)

Image of Datadog

Create and maintain end-to-end frontend tests

Learn best practices on creating frontend tests, testing on-premise apps, integrating tests into your CI/CD pipeline, and using Datadog’s testing tunnel.

Download The Guide

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay