Não, npm ci e npm install não são a mesma coisa, apesar de ambos instalarem dependências. Eles têm objetivos e comportamentos diferentes.
Vou resumir de um jeito bem direto:
Se não existir package-lock.json:
Se faltar algo ou houver inconsistência entre package.json e package-lock.json, ele falha (erro), justamente para garantir consistência.
Resumindo: travado, previsível e rápido. Ideal para:
Vou resumir de um jeito bem direto:
npm install
Usa o package.json como base.Se não existir package-lock.json:
- Resolve as versões das dependências.
- Cria um package-lock.json.
- Tenta respeitar o lock, mas pode atualizar o package-lock.json em algumas situações (por exemplo: dependências sem versão travada, ranges tipo ^1.2.0, etc.).
- Pode adicionar novas dependências (ex.: npm install axios --save), alterando tanto o package.json quanto o package-lock.json.
É o comando padrão para o desenvolvimento do dia a dia.
Resumindo: mais flexível, pode modificar o package-lock.json e não garante uma instalação 100% idêntica entre máquinas.
Resumindo: mais flexível, pode modificar o package-lock.json e não garante uma instalação 100% idêntica entre máquinas.
npm ci
Usa o package-lock.json como verdade absoluta.- Exige que o package-lock.json exista.
- Ignora o que está no package.json se conflitar com o lock: o que vale é o package-lock.json.
- Apaga a pasta node_modules inteira antes de instalar.
- Não altera o package-lock.json.
- É bem mais rápido e previsível.
Se faltar algo ou houver inconsistência entre package.json e package-lock.json, ele falha (erro), justamente para garantir consistência.
Resumindo: travado, previsível e rápido. Ideal para:
- CI/CD (pipelines de build)
- Produção
- Qualquer ambiente em que você quer que a instalação seja idêntica ao que está no lock.
Quando usar cada um?
Desenvolvimento local (alterando dependências)- npm install
- npm ci

Comentários
Postar um comentário