Это зависит от того, хотите ли вы использовать npm install
, иначе npm i
, или npm ci
.
npm install
сначала будет искать существующую папку node_modules
и использовать его повторно. Если нет, будет извлечен список зависимостей. Проверьте алгоритм полный .
npm ci
вместо этого удаляет существующую папку node_modules
, чтобы выполнить чистую установку зависимостей. Из docs :
Короче говоря, основные различия между использованием npm install
и npm ci
заключаются в следующем:
- Проект должен иметь существующие
package-lock.json
или npm-shrinkwrap.json
. - Если зависимости в блокировке пакета не совпадают с зависимостями в пакете. json,
npm ci
завершится с ошибкой вместо обновления блокировки пакета. npm ci
может устанавливать только проекты целиком: отдельные зависимости не могут быть добавлены с помощью этой команды. - Если
node_modules
уже присутствует, он будет автоматически удален до начала npm ci
его установка. - Он никогда не будет записывать в
package.json
или любую из package-locks
: установки по существу заморожены.
Некоторые тесты, имеющие ~/.npm
и node_modules
заполнено:
$ npm i --prefer-offline
#...
updated 2 packages in 17.472s
$ rm -rf ~/.npm/ # removes global npm cache
$ npm i --prefer-offline
#...
up to date in 16.271s # removing npm cache does not affects to npm i
$ rm -rf node_modules/
$ npm i --prefer-offline
#...
added 2525 packages from 1197 contributors in 55.388s # removing node_modules affetcs to npm i
$ npm ci --prefer-offline
#...
updated 2 packages in 17.201s
$ rm -rf ~/.npm/ # removes global npm cache
$ npm ci --prefer-offline
#...
added 2532 packages in 48.362s # removing npm cache affects to npm ci
$ rm -rf node_modules/
$ npm ci --prefer-offline
#...
added 2532 packages in 18.695s # removing node_modules does not affetcs to npm ci
Итак, в итоге npm ci
имеет функции, ориентированные на CI, которые могут быть интересны для использования, но если для вас нет преимуществ, просто кешируйте node_modules
и используйте npm install
вместо этого.