What is vite-plugin-pwa?
vite-plugin-pwa is a plugin for Vite that enables Progressive Web App (PWA) functionalities. It helps in generating service workers, manifest files, and other PWA-related configurations to make your web application installable and offline-capable.
What are vite-plugin-pwa's main functionalities?
Generate Service Worker
This feature allows you to generate a service worker with runtime caching strategies. The code sample demonstrates how to cache image files using a 'CacheFirst' strategy.
```javascript
import { defineConfig } from 'vite';
import { VitePWA } from 'vite-plugin-pwa';
export default defineConfig({
plugins: [
VitePWA({
registerType: 'autoUpdate',
workbox: {
runtimeCaching: [
{
urlPattern: /\.(?:png|jpg|jpeg|svg|gif)$/,
handler: 'CacheFirst',
options: {
cacheName: 'images',
expiration: {
maxEntries: 10,
},
},
},
],
},
}),
],
});
```
Generate Manifest File
This feature allows you to generate a web app manifest file. The code sample shows how to configure the manifest with app name, description, theme color, and icons.
```javascript
import { defineConfig } from 'vite';
import { VitePWA } from 'vite-plugin-pwa';
export default defineConfig({
plugins: [
VitePWA({
manifest: {
name: 'My App',
short_name: 'App',
description: 'My awesome app',
theme_color: '#ffffff',
icons: [
{
src: 'icon-192x192.png',
sizes: '192x192',
type: 'image/png',
},
{
src: 'icon-512x512.png',
sizes: '512x512',
type: 'image/png',
},
],
},
}),
],
});
```
Auto Update Service Worker
This feature enables the service worker to automatically update when new content is available. The code sample shows how to set the 'registerType' to 'autoUpdate'.
```javascript
import { defineConfig } from 'vite';
import { VitePWA } from 'vite-plugin-pwa';
export default defineConfig({
plugins: [
VitePWA({
registerType: 'autoUpdate',
}),
],
});
```
Other packages similar to vite-plugin-pwa
workbox-webpack-plugin
workbox-webpack-plugin is a plugin for Webpack that provides similar PWA functionalities like generating service workers and caching strategies. It is more tightly integrated with Webpack and offers a comprehensive set of tools for building PWAs.
pwa-asset-generator
pwa-asset-generator is a tool that helps generate images and manifest files for PWAs. While it doesn't handle service workers, it complements other PWA tools by focusing on generating the necessary assets for a PWA.
next-pwa
next-pwa is a plugin for Next.js that adds PWA support to Next.js applications. It provides functionalities like service worker generation and caching strategies, similar to vite-plugin-pwa but specifically tailored for Next.js.
Zero-config PWA Framework-agnostic Plugin for Vite
🚀 Features
- 📖 Documentation & guides
- 👌 Zero-Config: sensible built-in default configs for common use cases
- 🔩 Extensible: expose the full ability to customize the behavior of the plugin
- 🦾 Type Strong: written in TypeScript
- 🔌 Offline Support: generate service worker with offline support (via Workbox)
- ⚡ Fully tree shakable: auto inject Web App Manifest
- 💬 Prompt for new content: built-in support for Vanilla JavaScript, Vue 3, React, Svelte, SolidJS and Preact
- ⚙️ Stale-while-revalidate: automatic reload when new content is available
- ✨ Static assets handling: configure static assets for offline support
- 🐞 Development Support: debug your custom service worker logic as you develop your application
- 🛠️ Versatile: integration with meta frameworks: îles, SvelteKit, VitePress, Astro, Nuxt 3 and Remix
- 💥 PWA Assets Generator: generate all the PWA assets from a single command and a single source image
- 🚀 PWA Assets Integration: serving, generating and injecting PWA Assets on the fly in your application
📦 Install
From v0.17, vite-plugin-pwa
requires Vite 5.
From v0.16 vite-plugin-pwa
requires Node 16 or above: workbox v7
requires Node 16 or above.
From v0.13, vite-plugin-pwa
requires Vite 3.1 or above.
npm i vite-plugin-pwa -D
yarn add vite-plugin-pwa -D
pnpm add vite-plugin-pwa -D
🦄 Usage
Add VitePWA
plugin to vite.config.js / vite.config.ts
and configure it:
import { VitePWA } from 'vite-plugin-pwa'
export default {
plugins: [
VitePWA()
]
}
Read the 📖 documentation for a complete guide on how to configure and use
this plugin.
Check out the client type declarations client.d.ts for built-in frameworks support.
👀 Full config
Check out the type declaration src/types.ts and the following links for more details.
📄 License
MIT License © 2020-PRESENT Anthony Fu