|
| 1 | +const fs = require('fs') |
| 2 | +const path = require('path') |
| 3 | +const swBuild = require('workbox-build') |
| 4 | +const config = require('./workbox.config.json') |
| 5 | +const buildPrefix = '_gh_pages/' |
| 6 | + |
| 7 | +const workboxSWSrcPath = require.resolve('workbox-sw') |
| 8 | +const wbFileName = path.basename(workboxSWSrcPath) |
| 9 | +const workboxSWDestPath = buildPrefix + 'assets/js/vendor/' + wbFileName |
| 10 | +const workboxSWSrcMapPath = `${workboxSWSrcPath}.map` |
| 11 | +const workboxSWDestMapPath = `${workboxSWDestPath}.map` |
| 12 | + |
| 13 | +fs.createReadStream(workboxSWSrcPath).pipe(fs.createWriteStream(workboxSWDestPath)) |
| 14 | +fs.createReadStream(workboxSWSrcMapPath).pipe(fs.createWriteStream(workboxSWDestMapPath)) |
| 15 | + |
| 16 | +const updateUrl = (manifestEntries) => manifestEntries.map((entry) => { |
| 17 | + if (entry.url.startsWith(buildPrefix)) { |
| 18 | + const regex = new RegExp(buildPrefix, 'g') |
| 19 | + entry.url = entry.url.replace(regex, '') |
| 20 | + } |
| 21 | + return entry |
| 22 | +}) |
| 23 | + |
| 24 | +config.manifestTransforms = [updateUrl] |
| 25 | + |
| 26 | +swBuild.injectManifest(config).then(() => { |
| 27 | + const wbSwRegex = /{fileName}/g |
| 28 | + fs.readFile(config.swDest, 'utf8', (err, data) => { |
| 29 | + if (err) { |
| 30 | + throw err |
| 31 | + } |
| 32 | + const swFileContents = data.replace(wbSwRegex, wbFileName) |
| 33 | + fs.writeFile(config.swDest, swFileContents, () => { |
| 34 | + console.log('Pre-cache Manifest generated.') |
| 35 | + }) |
| 36 | + }) |
| 37 | +}) |
0 commit comments