npm vs npx: qual a diferença?
Se você está começando no ecossistema do Node.js, é bem comum confundir e nem entender o npm e npx. O que eles fazem? Qual a diferença? Onde moram? De que vivem?
npm
O npm é o gerenciador de pacotes do node, (Node Package Manager).
Você usa o npm principalmente para instalar dependências e rodar scripts do projeto, aqueles scripts declarados no manifesto package.json.
For example:
npm install react # Instalando um package normal
npm install -D eslint # Instalando um package de desenvolvimento
npm run dev # Rodando o script dev declarado no package.json
No fim do dia, o npm faz essa sequência:
- baixa os pacotes
- adiciona ao
node_modules - registra no
package.json
npx
O npx serve para executar pacotes, sem ter que instalar globalmente.
Exemplos:
npx create-react-app meu-app
npx eslint .
npx prisma migrate dev
O npx:
- usa a versão local do pacote (se existir)
- ou baixa temporariamente, executa e descarta
É como se, pegando como exemplo o create-react-app, ele baixasse temporáriamente o pacote create-react-app, e o executasse, sem ter que instalar globalmente e correr riscos de conflitos de versões posteriormente.
Já quando você chama ele dentro do seu working directory, e você já tem esse pacote instalado localmente no escopo do projeto, ele apenas executa ele, como eh o caso do prisma e do eslint dos exemplos.
Diferença na prática
- npm → instalar e gerenciar dependências
- npx → executar comandos de pacotes
Uma regra simples de lembrar:
npm instala, npx executa
Desde o npx, quase não faz mais sentido instalar ferramentas globalmente.
Se esse post te ajudou, deixa um comentário ou complementa com mais exemplos, valeuzasso!