diff --git a/gridsome.server.js b/gridsome.server.js index 40dfda31d9..6552f3065a 100644 --- a/gridsome.server.js +++ b/gridsome.server.js @@ -5,7 +5,7 @@ // Changes here require a server restart. // To restart press CTRL + C in terminal and run `gridsome develop` -const fs = require("fs"); +const fs = require("fs-extra"); const path = require("path"); const dayjs = require("dayjs"); const { imageType } = require("gridsome/lib/graphql/types/image"); @@ -275,6 +275,13 @@ module.exports = function (api) { }); }); + api.beforeBuild(async () => { + // Stage in cached images if they exist. + console.log("Stage in cached images from imageCacheDir") + console.log(`Moving from '${api.config.imageCacheDir}/ to '${api.config.imagesDir}'`) + moveFiles(`${api.config.imageCacheDir}/`, api.config.imagesDir); + }); + api.afterBuild(async () => { // Write all Platforms to /use/feed.json. let outDir = path.join(__dirname, "dist", "use"); @@ -283,9 +290,29 @@ module.exports = function (api) { fs.writeFile(feedPath, makePlatformsJson(platformsData), (error) => { if (error) throw error; }); + // Copy out compiled images. + console.log("Cache images from build to imageCacheDir") + console.log(`Copying from '${api.config.imagesDir}' to '${api.config.imageCacheDir}/'`) + copyFiles(api.config.imagesDir, `${api.config.imageCacheDir}/`); }); }; +async function copyFiles(source, dest) { + try { + await fs.copy(source, dest); + } catch (err) { + console.error(err); + } +} + +async function moveFiles(source, dest) { + try { + await fs.move(source, dest, {overwrite: true}); + } catch (err) { + console.error(err); + } +} + function makePlatformsJson(platformsData) { let platforms = platformsData.data.platforms.edges.map((edge) => { // Massage fields a little for backward compatibility. diff --git a/package.json b/package.json index 3578e0a91c..384e31d11b 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "bootstrap-vue": "^2.21.2", "commander": "^8.2.0", "dayjs": "^1.10.7", + "fs-extra": "^10.0.0", "gridsome": "^0.7.0", "jiti": "^1.12.0", "node-watch": "^0.7.1", diff --git a/yarn.lock b/yarn.lock index 0c2f139c00..25739cf586 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5269,6 +5269,15 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== +fs-extra@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" + integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.1.tgz#8abc128f7946e310135ddc93b98bddb410e7a34b"