Comandos para Desenvolvedores Node.js
Comandos de terminal que todo desenvolvedor React, TypeScript e Node.js precisa - gerenciamento de pacotes, configuração de ambiente, ferramentas de build e depuração.
Busque em todas as páginas da documentação
Comandos de terminal que todo desenvolvedor React, TypeScript e Node.js precisa - gerenciamento de pacotes, configuração de ambiente, ferramentas de build e depuração.
🤖 Read the SystemsArchitect.io Blog for over 100+ cloud architecture articles 🔥
Cartão de receita de referência rápida - pronto para copiar e colar.
# Gerenciamento de pacotes
npm install # instala todas as dependências
npm install zod # adiciona uma dependência
npm install -D vitest # adiciona uma dependência de desenvolvimento
npm run dev # inicia o servidor de desenvolvimento
npm run build # build de produção
# Gerenciamento de versão do Node
nvm install 22 # instala Node 22
nvm use 22 # muda para Node 22
node -v # verifica a versão do Node
# Ambiente
export PORT=3001 # define a variável de ambiente para esta sessão
cat .env.local # visualiza o arquivo .env
echo $NODE_ENV # verifica o ambiente atual
# Verificações rápidas
npx tsc --noEmit # verifica tipos sem construir
npx next lint # executa o linter
npx vitest run # executa testes uma vezQuando usar isso: Fluxo de trabalho de desenvolvimento diário - instalando pacotes, gerenciando versões do Node, executando builds, verificando tipos e depurando problemas.
# Configurando um novo projeto Next.js do zero
npx create-next-app@latest my-app --typescript --tailwind --app --src-dir
cd my-app
npm install zustand zod react-hook-form @hookform/resolvers
npm install -D vitest @testing-library/react
npm run dev
# App rodando em http://localhost:3000O que isso demonstra:
npx executa um pacote sem instalá-lo globalmenteinstall e install -D separados para dependências de tempo de execução vs. de desenvolvimento# Instalar
npm install # instala a partir do package.json
npm install --legacy-peer-deps # resolve conflitos de dependência de pares
npm ci # instalação limpa (usa o lockfile exatamente, mais rápido em CI)
# Adicionar/remover pacotes
npm install lucide-react # adiciona dependência
npm install -D prettier # adiciona dependência de desenvolvimento
npm uninstall lodash # remove um pacote
# Inspecionar
npm list --depth=0 # pacotes instalados de nível superior
npm outdated # verifica atualizações
npm audit # vulnerabilidades de segurança
npm audit fix # corrige automaticamente vulnerabilidades
# Scripts
npm run dev
npm run build
npm run start
npm test
npm run lint
# Visualizar um pacote antes de instalar
npm info zustand # detalhes do pacote
npm info zustand versions # todas as versões publicadas
# Vincular um pacote local para desenvolvimento
cd ../my-library && npm link
cd ../my-app && npm link my-library# Instalar pnpm
npm install -g pnpm
# Comandos equivalentes
pnpm install # instala tudo
pnpm add zod # adiciona dependência
pnpm add -D vitest # adiciona dependência de desenvolvimento
pnpm remove lodash # remove
pnpm dev # executa script (não precisa de "run")
pnpm build
# Comandos de workspace (monorepo)
pnpm -r build # executa build em todos os pacotes
pnpm --filter @app/web dev # executa dev em um pacote específico# Instalar nvm (macOS/Linux)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
# Instalar e usar uma versão do Node
nvm install 22
nvm install 20
nvm use 22
nvm alias default 22 # define o padrão para novos terminais
# Usar versão do arquivo .nvmrc
echo "22" > .nvmrc
nvm use # lê .nvmrc
# Listar versões instaladas
nvm ls
# Listar versões disponíveis
nvm ls-remote | grep "Latest LTS"# Definir apenas para o comando atual
PORT=3001 npm run dev
NODE_ENV=production npm run build
# Definir para a sessão atual
export DATABASE_URL="postgresql://localhost:5432/mydb"
# Visualizar variáveis de ambiente atuais
env | grep NODE
printenv PORT
# Estrutura do arquivo .env (Next.js)
# .env - todos os ambientes (commitado)
# .env.local - substituições locais (ignorado pelo git)
# .env.development - apenas dev
# .env.production - apenas prod
# .env.test - apenas test
# Acessar no Next.js
# Servidor: process.env.DATABASE_URL
# Cliente: process.env.NEXT_PUBLIC_API_URL (deve ter o prefixo NEXT_PUBLIC_)
# Verificar quais variáveis de ambiente seu aplicativo vê
node -e "console.log(process.env.NODE_ENV)"# Verificar tipos sem construir
npx tsc --noEmit
# Verificar tipos em modo de observação
npx tsc --noEmit --watch
# Gerar arquivos de declaração
npx tsc --declaration --emitDeclarationOnly
# Verificar tsconfig
npx tsc --showConfig
# Encontrar erros de tipo específicos
npx tsc --noEmit 2>&1 | grep "error TS"
# Contar erros de tipo
npx tsc --noEmit 2>&1 | grep "error TS" | wc -l
# Verificar um arquivo específico
npx tsc --noEmit src/lib/utils.ts# Build de produção do Next.js
npm run build
# Mostra tamanhos de rota, estático vs dinâmico, detalhamento do bundle
# Analisar tamanho do bundle
npm install -D @next/bundle-analyzer
ANALYZE=true npm run build
# Verificar tamanho do pacote antes de instalar
npx package-size zustand zod lodash
# ou use https://bundlephobia.com
# Medir tempo de build
time npm run build
# Verificar o que está em node_modules
du -sh node_modules # tamanho total
du -sh node_modules/* | sort -rh | head -20 # pacotes maiores
npx depcheck # encontrar dependências não utilizadas# Depurador do Node.js
node --inspect server.js # conectar Chrome DevTools
node --inspect-brk server.js # parar na primeira linha
# Depurar um aplicativo Next.js
NODE_OPTIONS='--inspect' npm run dev
# Profiling de memória
node --max-old-space-size=4096 server.js # aumentar heap para 4GB
node --heap-prof server.js # gerar perfil de heap
# REPL rápido para testes
node
> const { z } = require('zod')
> z.string().email().safeParse('test@example.com')
# Executar uma linha de comando
node -e "console.log(Date.now())"
node -e "console.log(require('./package.json').version)"
node -p "require('os').cpus().length" # -p imprime o resultado
# Verificar resolução de módulo
node -e "console.log(require.resolve('react'))"# Testar um endpoint de API
curl http://localhost:3000/api/health
curl -s http://localhost:3000/api/users | jq .
# POST com corpo JSON
curl -X POST http://localhost:3000/api/users \
-H "Content-Type: application/json" \
-d '{"name": "Alice", "email": "alice@example.com"}'
# POST com cabeçalho de autenticação
curl -H "Authorization: Bearer $TOKEN" \
http://localhost:3000/api/protected
# Medir tempo de uma requisição
curl -o /dev/null -s -w "Total: %{time_total}s\nTTFB: %{time_starttransfer}s\n" \
http://localhost:3000
# Monitorar uma porta
lsof -i :3000 # o que está usando a porta 3000
kill -9 $(lsof -ti :3000) # matar o que estiver na porta 3000Coisas que vão te pegar. Cada armadilha inclui o que dá errado, por que acontece e a correção.
Porta já em uso - EADDRINUSE: address already in use :::3000. Correção: lsof -ti :3000 | xargs kill -9 ou use uma porta diferente: PORT=3001 npm run dev.
Incompatibilidade de versão do Node - O build funciona localmente, mas falha em CI ou para colegas de equipe. Correção: Adicione um arquivo .nvmrc e o campo engines em package.json: "engines": { "node": ">=22" }.
npm install vs npm ci - npm install pode atualizar o package-lock.json, causando alterações inesperadas. Correção: Use npm ci em pipelines de CI - ele usa o lockfile exatamente e é mais rápido.
Prefixo NEXT_PUBLIC_ ausente - O código do lado do cliente recebe undefined para variáveis de ambiente. Correção: Variáveis de ambiente acessadas no navegador devem começar com NEXT_PUBLIC_. Variáveis apenas do servidor não precisam do prefixo.
Conflitos de pacotes globais - Instalações globais de next, typescript, etc. entram em conflito com as versões do projeto. Correção: Use npx em vez de instalações globais. Remova globais: npm uninstall -g next.
Heap fora de memória - Builds grandes travam com FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed. Correção: NODE_OPTIONS="--max-old-space-size=8192" npm run build.
Outras maneiras de resolver o mesmo problema - e quando cada uma é a melhor escolha.
| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
pnpm | Instalações mais rápidas, monorepos, resolução estrita de dependências | Projetos simples onde npm é suficiente |
yarn | Projetos existentes que já usam yarn | Novos projetos (pnpm ou npm são preferidos) |
bun | Velocidade máxima, executor de testes integrado | A estabilidade de produção é crítica (runtime mais novo) |
fnm | Troca de versão do Node mais rápida que nvm | Já usa nvm e funciona bem |
volta | Troca automática de versão do Node por projeto | Projetos simples com uma única versão do Node |
npm install lê package.json e pode atualizar package-lock.jsonnpm ci usa o lockfile exatamente, exclui node_modules primeiro e é mais rápidonpm ci em pipelines de CI para builds reproduzíveisnpx para comandos únicos como npx create-next-app ou npx tsc --noEmitnpx sempre usa a versão local do projeto, se disponívelecho "22" > .nvmrc
nvm usenvm use lê .nvmrc e muda para essa versãonvm alias default 22NEXT_PUBLIC_DATABASE_URL) não são expostas ao navegadorlsof -ti :3000 | xargs kill -9PORT=3001 npm run dev.nvmrc com a versão do Node (por exemplo, 22)engines em package.json: "engines": { "node": ">=22" }npm install -D @next/bundle-analyzer
ANALYZE=true npm run buildnpx depcheck para encontrar dependências não utilizadasNODE_OPTIONS='--inspect' npm run devchrome://inspect no Chrome e clique em "inspect" no seu processo Node--inspect-brk para parar na primeira linhaNODE_OPTIONS="--max-old-space-size=8192" npm run buildnpx tsc --noEmit--noEmit executa o verificador de tipos sem gerar arquivos .js--watch para verificação contínua durante o desenvolvimentonpx tsc --noEmit 2>&1 | grep "error TS" | wc -lgrep "error TS" para isolar erros de tipo de outra saídapnpm usa um armazenamento endereçável por conteúdo, então dependências compartilhadas não são duplicadas no discopnpm tem resolução de dependência mais rigorosa (previne dependências fantasmas)pnpm é mais rápido para instalações, especialmente em monoreposnpm é pré-instalado com Node e tem maior familiaridade no ecossistemaRevisado por Chris St. John·Última atualização: 10 de jul. de 2026
🤖 Read the SystemsArchitect.io Blog for over 100+ cloud architecture articles 🔥