npm ci vs npm install em CI: Qual Usar
Em CI você quase sempre quer npm ci, não npm install - eis o porquê.
Eles parecem semelhantes, mas se comportam de forma diferente em relação ao lockfile e à reprodutibilidade.
| npm install | npm ci | |
|---|---|---|
| Usa lockfile | Pode atualizá-lo | Instala exatamente a partir dele |
| node_modules | Reaproveita/corrige | Apaga e reinstala do zero |
| Reproduzível | Não | Sim |
| Falha em divergência do lockfile | Não | Sim (por design) |
Use npm ci em CI
npm ci oferece instalações limpas e reproduzíveis e falha de forma explícita se package.json e o lockfile divergirem - que é exatamente o que você quer em um pipeline. npm install é para desenvolvimento local, onde você pretende alterar dependências.
O veredito
CI: sempre npm ci (com o lockfile commitado). Mudanças de dependências locais: npm install.
Guias relacionados
npm ci "can only install with an existing package-lock.json in sync"Fix "npm ci can only install with an existing package-lock.json … in sync with package.json" in CI - caused b…
How to Cache Dependencies in GitHub Actions (Every Ecosystem)Cache dependencies in GitHub Actions with actions/cache - correct keys and paths for npm, yarn, pnpm, pip, Ma…
npm vs Yarn vs pnpm in CI: Speed, Disk & Reliabilitynpm vs Yarn vs pnpm for CI: install speed, disk usage, lockfile behavior, and caching. Which package manager…