Só acrescentaria que o npm ci
deve ser utilizado primariamente em processos de automações que incluem: plataformas de testes, integrações contínuas e implantação em ambiente produtivo. Você utiliza nesses ambientes porque você quer evitar problemas na automação. Em ambiente de desenvolvimento ainda é recomendado utilizar o npm install
.
No npm ci
você quer replicar exatamente um ambiente que já está validado com todas as suas dependências e subdependências. Você não quer correr o risco de atualizar alguma dependência na árvore do ESLint e não conseguir gerar a build. Também é por isso que você só deve utilizar o comando npm ci
em ambientes automáticos ou de implantação, você precisa sempre validar as vulnerabilidades e bugs do seu código em ambiente de desenvolvimento.
Faz bastante sentido, costumo ver bastante nos Dockerfile
de vários projetos que tem esse arquivo de exemplo para deploy.
Sim, é isso mesmo, o npm ci
seria pra esses ambientes onde você não quer experimentar uma possivel atualização de subdependencia que acaba quebrando alguma feature, e na propria documentação do npm eles comentar sobre usar nos ambientes de testes automatizados, builds e etc.