From c597c208a819e42d05f9e07c9b336790156c5756 Mon Sep 17 00:00:00 2001 From: Jimmy Cai Date: Thu, 17 Sep 2020 22:21:14 +0200 Subject: [PATCH] ci(netlify): add resources cache Modified https://github.com/cdeleeuwe/netlify-plugin-hugo-cache-resources, set cache dir to `exampleSite/resources` --- .../README.md | 27 +++++++++++++ .../index.js | 39 +++++++++++++++++++ .../manifest.yml | 5 +++ netlify.toml | 5 ++- 4 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 .netlify/plugins/netlify-plugin-hugo-cache-resources/README.md create mode 100644 .netlify/plugins/netlify-plugin-hugo-cache-resources/index.js create mode 100644 .netlify/plugins/netlify-plugin-hugo-cache-resources/manifest.yml diff --git a/.netlify/plugins/netlify-plugin-hugo-cache-resources/README.md b/.netlify/plugins/netlify-plugin-hugo-cache-resources/README.md new file mode 100644 index 0000000..a7c1ef2 --- /dev/null +++ b/.netlify/plugins/netlify-plugin-hugo-cache-resources/README.md @@ -0,0 +1,27 @@ +> Original Repo: https://github.com/cdeleeuwe/netlify-plugin-hugo-cache-resources +> +# Netlify Build Plugin: Persist Hugo resources Between Builds + +Persist [Hugo](https://gohugo.io/) resources folder between Netlify builds for huge build speed improvements! ⚡️ + +This plugin caches the `resources` folder after build. If you are processing many images, this would improve build duration significantly. + +Note: Restoring cache only comes from the production branch. So once cache is saved on the production branch, the next preview build would use the cache. For example, when pushing to the same preview build, the latest preview build will not get the cache from the previous preview build, but will get it from master. + +## Usage + +To install, add the following lines to your `netlify.toml` file: + +```toml +[build] + publish = "public" + +[[plugins]] + package = "netlify-plugin-hugo-cache-resources" + + [plugins.inputs] + # If it should show more verbose logs (optional, default = true) + debug = true +``` + +Note: The `[[plugins]]` line is required for each plugin, even if you have other plugins in your `netlify.toml` file already. \ No newline at end of file diff --git a/.netlify/plugins/netlify-plugin-hugo-cache-resources/index.js b/.netlify/plugins/netlify-plugin-hugo-cache-resources/index.js new file mode 100644 index 0000000..fd8ffb6 --- /dev/null +++ b/.netlify/plugins/netlify-plugin-hugo-cache-resources/index.js @@ -0,0 +1,39 @@ +const getResourcesDir = () => { + return 'exampleSite/resources'; +} + +const printList = (items) => { + console.log('---'); + items.forEach((item, index) => { + console.log(`${index + 1}. ${item}`); + }); +} + +module.exports = { + + async onPreBuild({ utils, inputs }) { + const path = getResourcesDir(); + const success = await utils.cache.restore(path); + + if (success) { + const cachedFiles = await utils.cache.list(path); + console.log(`Restored cached resources folder. Total files: ${cachedFiles.length}`); + if (inputs.debug) printList(cachedFiles); + } else { + console.log(`No cache found for resources folder`); + } + }, + + async onPostBuild({ utils, inputs }) { + const path = getResourcesDir(); + const success = await utils.cache.save(path); + + if (success) { + const cachedFiles = await utils.cache.list(path); + console.log(`Saved resources folder to cache. Total files: ${cachedFiles.length}`); + if (inputs.debug) printList(cachedFiles); + } else { + console.log(`No resources folder cached`); + } + } +}; \ No newline at end of file diff --git a/.netlify/plugins/netlify-plugin-hugo-cache-resources/manifest.yml b/.netlify/plugins/netlify-plugin-hugo-cache-resources/manifest.yml new file mode 100644 index 0000000..d6a208f --- /dev/null +++ b/.netlify/plugins/netlify-plugin-hugo-cache-resources/manifest.yml @@ -0,0 +1,5 @@ +name: netlify-plugin-hugo-cache +inputs: + - name: debug + description: Show more verbose logs + default: true \ No newline at end of file diff --git a/netlify.toml b/netlify.toml index 55ebd33..89f501b 100644 --- a/netlify.toml +++ b/netlify.toml @@ -14,4 +14,7 @@ command = "cd exampleSite && hugo --gc --themesDir ../.. -b ${DEPLOY_PRIME_URL}" [context.deploy-preview] - command = "cd exampleSite && hugo --gc --themesDir ../.. -b ${DEPLOY_PRIME_URL}" \ No newline at end of file + command = "cd exampleSite && hugo --gc --themesDir ../.. -b ${DEPLOY_PRIME_URL}" + +[[plugins]] + package = "/.netlify/plugins/netlify-plugin-hugo-cache-resources" \ No newline at end of file