Skip to content

Commit

Permalink
feat: use integraty file to invalidate icon cache
Browse files Browse the repository at this point in the history
  • Loading branch information
pi0 committed Aug 13, 2020
1 parent f4eeda7 commit 6661a09
Showing 1 changed file with 17 additions and 11 deletions.
28 changes: 17 additions & 11 deletions lib/icon/module.js
Expand Up @@ -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))
Expand Down Expand Up @@ -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, '')
}

0 comments on commit 6661a09

Please sign in to comment.