ikherty / droneDOCS

https://propwashservice.ru/
13 stars 14 forks source link

`npm install` to `npm ci` #8

Closed Suput closed 1 year ago

Suput commented 1 year ago

Если делать npm install, то он установит пакеты новых версий (если новая версия есть, он её установит)

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

Информация из Интернета:

  1. https://www.geeksforgeeks.org/difference-between-npm-i-and-npm-ci-in-node-js/ image
  2. https://stackoverflow.com/questions/52499617/what-is-the-difference-between-npm-install-and-npm-ci image

Update: Хотел написать сразу, но забыл Устанавливать пакеты новых версий чревато тем, что могут выпить функции, или убрать поддержку старых, или выкатить непроверенные полностью обновления. Поэтому если обновление пакетов НЕ требуется, лучше писать npm ci. npm install должен делать разработчик. Сначала локально проверить, что всё работает, затем уже выкатывать обновления

dimazollo commented 1 year ago

Привет! Спасибо за предложение, однако, на мой взгляд информация из предоставленных вами ресурсов устарела и не соответствует действительности. В частности вот что говорится об npm install в официальной документации - https://docs.npmjs.com/cli/v9/commands/npm-install#description

This command installs a package and any packages that it depends on. If the package has a package-lock, or an npm shrinkwrap file, or a yarn lock file, the installation of dependencies will be driven by that, respecting the following order of precedence:

  • npm-shrinkwrap.json
  • package-lock.json
  • yarn.lock

Также вы можете самостоятельно попробовать провести следующий эксперимент:

Часть 1:

Часть 2:

Для большей правдоподобности предлагаю повторить обе части эксперимента по несколько раз и посмотреть на среднее время. Я убедился, что npm ci в текущих реалиях по непонятной причине работает дольше.

Suput commented 1 year ago

Описание с офф сайта для npm install: This command installs a package and any packages that it depends on. If the package has a package-lock, or an npm shrinkwrap file, or a yarn lock file, the installation of dependencies will be driven by that, respecting the following order of precedence

Описание для npm ci: This command is similar to npm install, except it's meant to be used in automated environments such as test platforms, continuous integration, and deployment -- or any situation where you want to make sure you're doing a clean install of your dependencies

Вывод: Соглашусь с вами. Мой косяк. Надо внимательнее читать) Можно отколнить этот PR