From 6661a09f86bbc169a99effac3d9cb1620f530b3d Mon Sep 17 00:00:00 2001 From: pooya parsa Date: Thu, 13 Aug 2020 17:21:50 +0200 Subject: [PATCH] feat: use integraty file to invalidate icon cache --- lib/icon/module.js | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/lib/icon/module.js b/lib/icon/module.js index 6b453cb9..bc40607b 100755 --- a/lib/icon/module.js +++ b/lib/icon/module.js @@ -3,6 +3,7 @@ const { fork } = require('child_process') const fs = require('fs-extra') const hasha = require('hasha') const { joinUrl, getRouteParams, sizeName } = require('../utils') +const { version } = require('../../package.json') module.exports = function (pwa) { this.nuxt.hook('build:before', () => run.call(this, pwa, true)) @@ -198,25 +199,30 @@ function emitAssets (options) { } async function resizeIcons (options) { - if (await fs.exists(options._cacheDir)) { + const resizeOpts = JSON.stringify({ + version, + input: options.iconSrc, + distDir: options._cacheDir, + sizes: [ + ...options.sizes, + ...options.iosSizes + ] + }) + + const integrityFile = path.join(options._cacheDir, '.' + hasha(resizeOpts)) + + if (await fs.exists(options.integrityFile)) { return } await fs.mkdirp(options._cacheDir) await new Promise((resolve, reject) => { - const child = fork(require.resolve('./resize'), [ - JSON.stringify({ - input: options.iconSrc, - distDir: options._cacheDir, - sizes: [ - ...options.sizes, - ...options.iosSizes - ] - }) - ]) + const child = fork(require.resolve('./resize'), [resizeOpts]) child.on('exit', (code) => { return code ? reject(code) : resolve() }) }) + + await fs.writeFile(integrityFile, '') }