During the Automated Build and Deploy process for a SharePoint Framework Web Part (as documented here) one of the steps you go through to install the application on the build server is a familiar step ‘npm install’.
This works just fine when working locally and should be, but it is inefficient as part of an automated build process.
For a good explaination of why, check out this stackoverflow answer https://stackoverflow.com/questions/52499617/what-is-the-difference-between-npm-install-and-npm-ci/53325242#53325242
npm install reads
package.json to create a list of dependencies and uses
package-lock.json to inform which versions of these dependencies to install. If a dependency is not in
package-lock.json it will be added by
npm ci (named after Continuous Integration) installs dependencies directly from
package-lock.json and uses
package.json only to validate that there are no mismatched versions. If any dependencies are missing or have incompatible versions, it will throw an error.
In my experience this can speed up the build process by more than 50% and as the npm install is the rate determining step for the overall buil, this is very helpful.
The step in the process for the build should look like this:
I have submitted a pull request to update the documentation and we will see if it is worthy 🙂