Skip to content

Commit

Permalink
feat: override dev-dist assets between restarts (#650)
Browse files Browse the repository at this point in the history
* feat: remove dev dist folder between restarts

* chore: refactor logic

* chore: refactor `createDevRegisterSW` logic
  • Loading branch information
userquin committed Jan 25, 2024
1 parent b3350c8 commit 0e6799f
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 16 deletions.
1 change: 1 addition & 0 deletions examples/vanilla-ts-dev-options/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ export default defineConfig({
enabled: process.env.SW_DEV === 'true',
/* when using generateSW the PWA plugin will switch to classic */
navigateFallback: 'index.html',
suppressWarnings: true,
},
}),
],
Expand Down
8 changes: 4 additions & 4 deletions examples/vue-router/src/main.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import { createApp, defineAsyncComponent } from 'vue'
import { createApp } from 'vue'
import { createRouter, createWebHistory } from 'vue-router'
import App from './App.vue'
import './index.css'

const router = createRouter({
history: createWebHistory(),
routes: [
{ path: '/', component: defineAsyncComponent(() => import('./pages/home.vue')) },
{ path: '/about', component: defineAsyncComponent(() => import('./pages/about.vue')) },
{ path: '/hi/:name', component: defineAsyncComponent(() => import('./pages/hi/[name].vue')), props: true },
{ path: '/', component: () => import('./pages/home.vue') },
{ path: '/about', component: () => import('./pages/about.vue') },
{ path: '/hi/:name', component: () => import('./pages/hi/[name].vue'), props: true },
],
})

Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "vite-plugin-pwa",
"type": "module",
"version": "0.17.4",
"packageManager": "pnpm@8.11.0",
"packageManager": "pnpm@8.14.3",
"description": "Zero-config PWA for Vite",
"author": "antfu <anthonyfu117@hotmail.com>",
"license": "MIT",
Expand Down Expand Up @@ -86,7 +86,7 @@
"lint": "eslint .",
"lint-fix": "nr lint --fix",
"dev": "esno scripts/dev.ts",
"build": "esno scripts/build.ts",
"build": "rimraf dist && esno scripts/build.ts",
"prepublishOnly": "npm run build",
"release": "bumpp && npm publish",
"examples": "esno scripts/run-examples.ts",
Expand Down
17 changes: 7 additions & 10 deletions src/plugins/dev.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import type { PWAPluginContext } from '../context'
export const swDevOptions = {
swUrl: DEV_SW_NAME,
swDevGenerated: false,
registerSWGenerated: false,
workboxPaths: new Map<string, string>(),
}

Expand Down Expand Up @@ -128,15 +129,15 @@ export function DevPlugin(ctx: PWAPluginContext) {
mkdirSync(globDirectory, { recursive: true })

const swDest = resolve(globDirectory, 'sw.js')
if (!swDevOptions.swDevGenerated || !existsSync(swDest)) {
if (!swDevOptions.swDevGenerated) {
// add empty js file to suppress workbox-build warnings
let suppressWarnings: string | undefined
if (options.devOptions.suppressWarnings === true) {
suppressWarnings = normalizePath(resolve(globDirectory, 'suppress-warnings.js'))
await fs.writeFile(suppressWarnings, '', 'utf-8')
}
const globPatterns = options.devOptions.suppressWarnings === true
? ['*.js']
? ['suppress-warnings.js']
: options.workbox.globPatterns
// we only need to generate sw on dev-dist folder and then read the content
// the sw precache (self.__SW_MANIFEST) will be empty since we're using `dev-dist` folder
Expand Down Expand Up @@ -207,18 +208,14 @@ async function createDevRegisterSW(options: ResolvedVitePWAOptions, viteConfig:
if (options.injectRegister === 'script' || options.injectRegister === 'script-defer') {
const devDist = await resolveDevDistFolder(options, viteConfig)
if (!existsSync(devDist))
mkdirSync(devDist)
mkdirSync(devDist, { recursive: true })

const registerSW = resolve(devDist, FILE_SW_REGISTER)
if (existsSync(registerSW)) {
// since we don't delete the dev-dist folder, we just add it if already exists
if (!swDevOptions.workboxPaths.has(registerSW))
swDevOptions.workboxPaths.set(normalizePath(`${options.base}${FILE_SW_REGISTER}`), registerSW)

return
if (!swDevOptions.registerSWGenerated) {
await fs.writeFile(registerSW, generateSimpleSWRegister(options, true), { encoding: 'utf8' })
swDevOptions.registerSWGenerated = true
}

await fs.writeFile(registerSW, generateSimpleSWRegister(options, true), { encoding: 'utf8' })
swDevOptions.workboxPaths.set(normalizePath(`${options.base}${FILE_SW_REGISTER}`), registerSW)
}
}
Expand Down

0 comments on commit 0e6799f

Please sign in to comment.