heroku / heroku-buildpack-nodejs

Heroku's buildpack for Node.js applications.
https://devcenter.heroku.com/articles/buildpacks
MIT License
1.31k stars 2.63k forks source link

Do not restore cache when using npm ci #889

Open danielleadams opened 3 years ago

danielleadams commented 3 years ago

With the current implementation of npm ci usage too create the build environment and Heroku slug, the buildpack will restore the cache at the beginning of the build and save the cache at the end of the build.

As recommended by the npm docs (https://docs.npmjs.com/cli/v6/commands/npm-ci#description), there should be no node_modules before an npm ci run because the command will delete the node_modules anyways. (The Heroku buildpack will pull node_modules from the previous build and restore them to the node_modules directory if the build is configured to use NODE_MODULES_CACHE.)

git2gus[bot] commented 3 years ago

This issue has been linked to a new work item: W-8711501

fjorgemota commented 3 years ago

Maybe a good idea instead of just discarding the cache for node_modules would be just adding a --cache option to the npm ci call passing a directory that the buildpack could use for cache (like Gitlab CI suggests, for instance). So we could have some performance improvement by not doing unnecessary network requests while also having the speedup of the npm ci.

I'm not totally sure if this would be good for another issue or if it could be something that could be added as an enhancement in this issue...

git2gus[bot] commented 3 years ago

This issue has been linked to a new work item: W-8870770