This command is similar to npminstall, 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.
The main differences between using npminstall and npmci are:
• The project must have an existing package-lock.json or
npm-shrinkwrap.json.
• If dependencies in the package lock do not match those in package.json,
npmci will exit with an error, instead of updating the package lock.
• npmci can only install entire projects at a time: individual
dependencies cannot be added with this command.
• If a node_modules is already present, it will be automatically removed
before npmci begins its install.
• It will never write to package.json or any of the package-locks:
installs are essentially frozen.
NOTE: If you create your package-lock.json file by running npminstall
with flags that can affect the shape of your dependency tree, such as
--legacy-peer-deps or --install-links, you must provide the same
flags to npmci or you are likely to encounter errors. An easy way to do
this is to run, for example,
npmconfigsetlegacy-peer-deps=true--location=project and commit the
.npmrc file to your repo.