Skip to content

Commit

Permalink
fix(workbox): restore sw.js with smart build (fixes #352)
Browse files Browse the repository at this point in the history
  • Loading branch information
pi0 committed Oct 10, 2020
1 parent f35d2e7 commit 491f440
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 26 deletions.
70 changes: 44 additions & 26 deletions lib/workbox/module.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
const path = require('path')
const { resolve } = require('path')
const { existsSync, writeFile, readFile } = require('fs-extra')

const { getOptions } = require('./options')
const { readJSFiles, pick } = require('./utils')

module.exports = function nuxtWorkbox (pwa) {
this.nuxt.hook('build:before', async () => {
// Get options
const options = getOptions.call(this, pwa)
const { nuxt } = this
const options = getOptions.call(this, pwa)

this.nuxt.hook('build:before', async () => {
// Warning for dev option
if (options.dev) {
// eslint-disable-next-line no-console
Expand All @@ -17,7 +18,7 @@ module.exports = function nuxtWorkbox (pwa) {
// Register plugin
if (options.autoRegister) {
this.addPlugin({
src: path.resolve(__dirname, `templates/workbox${options.enabled ? '' : '.unregister'}.js`),
src: resolve(__dirname, `templates/workbox${options.enabled ? '' : '.unregister'}.js`),
ssr: false,
fileName: 'workbox.js',
options: {
Expand All @@ -28,30 +29,47 @@ module.exports = function nuxtWorkbox (pwa) {

// Add sw.js
if (options.swTemplate) {
await this.addTemplate({
const templateOptions = {
swOptions: pick(options, [
'workboxURL',
'importScripts',
'config',
'cacheNames',
'clientsClaim',
'skipWaiting',
'cleanupOutdatedCaches',
'offlineAnalytics',
'preCaching',
'runtimeCaching',
'offlinePage',
'pagesURLPattern',
'offlineStrategy'
]),
routingExtensions: await readJSFiles.call(this, options.routingExtensions),
cachingExtensions: await readJSFiles.call(this, options.cachingExtensions),
workboxExtensions: await readJSFiles.call(this, options.workboxExtensions)
}

this.addTemplate({
src: options.swTemplate,
fileName: 'pwa/sw.js',
options: templateOptions
})

this.addTemplate({
src: options.swTemplate,
fileName: options.swDest,
options: {
swOptions: pick(options, [
'workboxURL',
'importScripts',
'config',
'cacheNames',
'clientsClaim',
'skipWaiting',
'cleanupOutdatedCaches',
'offlineAnalytics',
'preCaching',
'runtimeCaching',
'offlinePage',
'pagesURLPattern',
'offlineStrategy'
]),
routingExtensions: await readJSFiles.call(this, options.routingExtensions),
cachingExtensions: await readJSFiles.call(this, options.cachingExtensions),
workboxExtensions: await readJSFiles.call(this, options.workboxExtensions)
}
options: templateOptions
})
}
})

if (nuxt.options.target === 'static') {
nuxt.hook('generate:before', async () => {
const swJS = resolve(nuxt.options.buildDir, 'pwa/sw.js')
if (existsSync(swJS)) {
await writeFile(options.swDest, await readFile(swJS))
}
})
}
}
1 change: 1 addition & 0 deletions test/fixture/nuxt.config.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
module.exports = {
dev: false,
rootDir: __dirname,
target: 'static',

buildModules: [
{ handler: require('../../') }
Expand Down

0 comments on commit 491f440

Please sign in to comment.