Quais as melhores ferramentas para trabalhar com Node?

Utilizar boas ferramentas é algo que transcende a sua área de atuação. Desde um jogador de futebol ou músico profissional, até um desenvolvedor de software. Nesse artigo, proponho algumas boas opções para desenvolvedores trabalhando com node, javascript e typescript. Package Managers Ferramentas para gerenciar pacotes e dependências, realizar publicação de libs e versionamento. npm O npm é a opção padrão, que está sempre acompanhando o node em qualquer instalação, de modo que tem a vantagem de ser a referência. Em algum momento, a falta de desempenho e funcionalidades focadas na DX (Developer Experience) motivaram o surgimento do yarn, porem isso não é algo que é mais tão relevante - desde resolução customizada de dependências, até suporte a monorepos, o npm possui uma boa estabilidade e sempre está ali disponível. Provavelmente, também será o que as automações de cicd vão se basear na maior parte dos projetos. https://docs.npmjs.com/about-npm bun O bun acaba sendo uma solução completa, pois também pode ser utilizado para outros fins além de gerenciamento de dependências. Nesse ultimo quesito, ele disputa espaço com o pnpm - uma vez que ambos possuem foco em performance. O fato de ser possível utilizar o bun também para outras partes da toolchain (bundler, runtime) acaba sendo um fator importante de desempate, algo que estou testando com a lib samless https://bun.sh Lerna O lerna existe há bastante tempo, tendo passado a utilizar nx como base. Para monorepos, ele se integra perfeitamente com a funcionalidade de workspaces do npm, além de facilitar estratégias avançadas de versionamento com bump independente de versões, utilização de tags (git), versionamento semântico baseado em conventional commits. Inclusive, utilizei antes dessa mudança para o nx e o estado atual é simplesmente muito superior (caso você tenha traumas dessa época em que tudo era mato na hora de utilizar monorepos). https://dev.to/nrwl/lerna-is-dead-long-live-lerna-3jal https://lerna.js.org/ Configuração de ambiente Ferramentas que permitem gerenciar versões do node globalmente nvm O bom e velho Node Version Manager. Extremamente popular, bom no que se propõem, é sem dúvidas um must-have (sem contar no fato de que grande parte dos desenvolvedores da comunidade javascript estão familiarizados). Uma opção igualmente interessante é o fnm, que faz parte da leva de ferramentas desenvolvidas em rust, sendo o uso bastante próximo. https://github.com/nvm-sh/nvm Bundlers Ferramentas que permite transpilar código em ts/tsx para js, aplicando otimizações diversas como ofuscação, bundle em arquivo único, etc. esbuild Ver algo com a qualidade do esbuild é sem dúvidas fantástico - ainda mais se você viveu os anos de reinado do webpack, com configurações complexas e performance questionável. Várias das ferramentas de build modernas, em especial o vite (que irei comentar abaixo), foram criadas a partir do esbuild, de modo que pode ser útil caso você queira "escovar bits" para extrair o máximo de performance. https://esbuild.github.io/ vite O Vite me foi apresentado em um contexto de front-end web, embora creio que seja possível utilizá-lo também no backend. É a minha ferramenta de escolha para subir aplicações, bastando algo como: $ npm create vite E selecionar algumas opções para subir algo que utilize react, vue, svelte ou até mesmo HTML, css e javascript puros. https://github.com/vitejs/vite?tab=readme-ov-file tsup A magia do tsup é entregar bons padrões e velocidade. É possível subir uma aplicação com typescript sem precisar configurar nada, bastando apenas: $ tsup src/index.ts Para gerar um output em dist/index.js. Rápido e direto. https://tsup.egoist.dev/ Testes Ferramentas para escrever e executar testes, coletar coverage, etc jest O jest se tornou o padrão de fato dentro do ecossistema javascript, algo que é comprovado pelas alternativas nativas do node, deno e bun que copiam o design e a DX de forma idêntica. https://jestjs.io/docs/getting-started Como testar exceptions com o Jest Apache jmeter Dentre as ferramentas mais clássicas, eu poderia listar jmeter como o Eclipse dos testes de performance. Basta adicionar o gerenciador de plugins para ter um canivete Suíço que consegue simular usuários com qualquer tipo de comportamento estatístico, gerar diversos tipos de gráficos e ser adicionado a qualquer pipeline de CI/CD. Vale comentar que existem ferramentas com um foco maior em uma abordagem "as a code", das quais o locust e o artillery se destacam. Uma abordagem interessante com o jmeter consistem em integrá-lo com o Grafana, de modo a ter uma visão em tempo real dos resultados dos testes (via InfluxDB). https://github.com/apache/jmeter https://locust.io/ https://www.artillery.io/ Stryker Mutator O stryker p

May 1, 2025 - 03:06
 0
Quais as melhores ferramentas para trabalhar com Node?

Utilizar boas ferramentas é algo que transcende a sua área de atuação. Desde um jogador de futebol ou músico profissional, até um desenvolvedor de software. Nesse artigo, proponho algumas boas opções para desenvolvedores trabalhando com node, javascript e typescript.

Package Managers

Ferramentas para gerenciar pacotes e dependências, realizar publicação de libs e versionamento.

npm

O npm é a opção padrão, que está sempre acompanhando o node em qualquer instalação, de modo que tem a vantagem de ser a referência.

Em algum momento, a falta de desempenho e funcionalidades focadas na DX (Developer Experience) motivaram o surgimento do yarn, porem isso não é algo que é mais tão relevante - desde resolução customizada de dependências, até suporte a monorepos, o npm possui uma boa estabilidade e sempre está ali disponível. Provavelmente, também será o que as automações de cicd vão se basear na maior parte dos projetos.

bun

Bun

O bun acaba sendo uma solução completa, pois também pode ser utilizado para outros fins além de gerenciamento de dependências. Nesse ultimo quesito, ele disputa espaço com o pnpm - uma vez que ambos possuem foco em performance.

O fato de ser possível utilizar o bun também para outras partes da toolchain (bundler, runtime) acaba sendo um fator importante de desempate, algo que estou testando com a lib samless

Lerna

Lerna

O lerna existe há bastante tempo, tendo passado a utilizar nx como base. Para monorepos, ele se integra perfeitamente com a funcionalidade de workspaces do npm, além de facilitar estratégias avançadas de versionamento com bump independente de versões, utilização de tags (git), versionamento semântico baseado em conventional commits.

Inclusive, utilizei antes dessa mudança para o nx e o estado atual é simplesmente muito superior (caso você tenha traumas dessa época em que tudo era mato na hora de utilizar monorepos).

Configuração de ambiente

Ferramentas que permitem gerenciar versões do node globalmente

nvm

NVM: Node Version Manager

O bom e velho Node Version Manager. Extremamente popular, bom no que se propõem, é sem dúvidas um must-have (sem contar no fato de que grande parte dos desenvolvedores da comunidade javascript estão familiarizados).

Uma opção igualmente interessante é o fnm, que faz parte da leva de ferramentas desenvolvidas em rust, sendo o uso bastante próximo.

Bundlers

Ferramentas que permite transpilar código em ts/tsx para js, aplicando otimizações diversas como ofuscação, bundle em arquivo único, etc.

esbuild

Comparação do esbuild com outras ferramentas

Ver algo com a qualidade do esbuild é sem dúvidas fantástico - ainda mais se você viveu os anos de reinado do webpack, com configurações complexas e performance questionável.

Várias das ferramentas de build modernas, em especial o vite (que irei comentar abaixo), foram criadas a partir do esbuild, de modo que pode ser útil caso você queira "escovar bits" para extrair o máximo de performance.

vite

Vite logo

O Vite me foi apresentado em um contexto de front-end web, embora creio que seja possível utilizá-lo também no backend.

É a minha ferramenta de escolha para subir aplicações, bastando algo como:

$ npm create vite

E selecionar algumas opções para subir algo que utilize react, vue, svelte ou até mesmo HTML, css e javascript puros.

tsup

TSUP

A magia do tsup é entregar bons padrões e velocidade. É possível subir uma aplicação com typescript sem precisar configurar nada, bastando apenas:

$ tsup src/index.ts

Para gerar um output em dist/index.js. Rápido e direto.

Testes

Ferramentas para escrever e executar testes, coletar coverage, etc

jest

Jest

O jest se tornou o padrão de fato dentro do ecossistema javascript, algo que é comprovado pelas alternativas nativas do node, deno e bun que copiam o design e a DX de forma idêntica.

Apache jmeter

Apache Jmeter Logo

Dentre as ferramentas mais clássicas, eu poderia listar jmeter como o Eclipse dos testes de performance. Basta adicionar o gerenciador de plugins para ter um canivete Suíço que consegue simular usuários com qualquer tipo de comportamento estatístico, gerar diversos tipos de gráficos e ser adicionado a qualquer pipeline de CI/CD.

Vale comentar que existem ferramentas com um foco maior em uma abordagem "as a code", das quais o locust e o artillery se destacam.

Uma abordagem interessante com o jmeter consistem em integrá-lo com o Grafana, de modo a ter uma visão em tempo real dos resultados dos testes (via InfluxDB).

Stryker Mutator

Stryker Logo

O stryker permite fazer testes de mutação de forma automatiza. Ele se integra de uma forma muito prática ao jest, permitindo avaliar se a suíte de testes em si possui qualidade. É uma boa forma de testar se as aplicações possuem testes unitários apenas pelo coverage, ou se estes de fato agregam valor na estabilidade do software.

Pact

Pact logo

O pact acaba sendo outra ferramenta para testes menos comuns. Nesse caso, seria "o stryker dos testes de contrato". Caso você utilize uma abordagem "consumer first" na hora de construir APIs, pode ser uma ferramenta crucial.

Se torna possível, por exemplo, criar testes na aplicação cliente que geram automaticamente um "contrato", o qual pode ser utilizado no backend para validar modificações nas APIs. Isso evita que breaking changes passem despercebidas.