Выбор ответа Junior CI: пайплайны и артефакты обновлено

npm ci против npm install

Вопрос

Почему в пайплайне используют npm ci, а не npm install?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: npm ci ставит строго версии из lock-файла и падает при расхождении с ним. npm ci удаляет nodemodules и ставит ровно то, что в package-lock.json, а при рассинхроне с package.json завершается ошибкой. npm install может обновить lock-файл, и две сборки одного коммита получат разные зависимости.

Варианты ответа

  1. npm ci работает без интернета, беря пакеты из встроенного кеша CI
  2. npm ci не ставит devDependencies, поэтому сборка меньше и быстрее
  3. npm ci ставит строго версии из lock-файла и падает при расхождении с нимправильный ответ
  4. npm install в CI запрещён лицензией npm для коммерческих проектов

Разбор

npm ci удаляет node_modules и ставит ровно то, что в package-lock.json, а при рассинхроне с package.json завершается ошибкой. npm install может обновить lock-файл, и две сборки одного коммита получат разные зависимости. Интернет npm ci нужен (если нет локального кеша), devDependencies он ставит по умолчанию, лицензионных ограничений нет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.