"npm i" asks the registry about each module from your dependencies and then upgrades or not. "npm ci" deleted node_modules and copies them from the cache. The performance will depend on how many modules you have and how fast is your network and disk. "npm ci" is meant for automated builds, which happen many times a day and the package lock changes as good as never. "npm i" may modify your package lock and is meant to be used when you want to add, remove or update your dependencies. Instead of looking at the perfoprmance, you could use the target scenario as the decisive criterion. You should use "npm i" if you install dependencies from GIT URLs and you expect the latest state of the requested branch installed. They are cached and "npm ci" does not test if the branch in GIT changed or not since the last run. "npm i" always reinstall these modules.
... View more