Netlify Plugin: Custom Cache
A generic cache plugin for saving and restoring files and/or folders between Netlify builds for impressive speed improvements. Worry less about running out of build minutes! ⚡
In other words, this plugin is a pretty wrapper around Netlify's native cache utility — it isn't tied to any specific static site generator (on purpose).
Install
Add the following to your netlify.toml
configuration:
[[plugins]]
package = "netlify-plugin-cache"
[plugins.inputs]
paths = ["resources", "_vendor", "folder/file.md"]
This plugin only takes one input named paths
, an array of files and/or directories relative to your project's root. These files/directories are restored before a build and saved in cache after a build if it is successful.
🚨 Important: paths
defaults to [".cache"]
, but it's highly recommended you set this yourself based on the tools you're using. See examples below.
Read more about plugin configuration at the official Netlify Plugin docs.
Usage examples
- Hugo: Caching the
resources
directory can speed up your build greatly if you process a lot of images via Hugo pipes. You can also cache thepublic
directory to avoid completely rebuilding the entire site on each deploy. More info here. - Gatsby: By default, the
.cache
directory holds persistent data between builds. You can also cache thedist
directory to avoid completely rebuilding the entire site on each deploy. More info here. - Next.js: The
.next
directory holds the build output. More info here. - Anything else: This is the reason I kept this plugin as generic as possible! Research the caching behavior of your static site generator (and how to customize it if necessary). Feel free to make a PR and add it here as another example, too!
Debugging
This plugin doesn't provide a way to output a list of files that were cached or restored, because Netlify already provides an official plugin named netlify-plugin-debug-cache
to do exactly that. No need to re-invent the wheel!
You can add their debug plugin after this plugin in your netlify.toml
. (And yes, you need a [[plugins]]
line for each plugin you add.)
[[plugins]]
package = "netlify-plugin-debug-cache"
The plugin will generate a file named cache-output.json
at the root of your project's publish directory. See an example file or learn more about this plugin.
Licenses
This project is distributed under the MIT License.