

직접 작성하기 번거로우므로, 라이브러리 도움을 받아 설정하는 것이 좋습니다.
터미널에서 다음 명령어로 PWA 플러그인을 설치합니다.
npm install vite-plugin-pwa
또는 PWA 설정이 완료된 템플릿 프로젝트를 생성할 수도 있습니다.
npm create @vite-pwa/pwa@latest
Vue3 프로젝트의 경우, Vue 플러그인은 @vitejs/plugin-vue를 사용합니다.
아래는 Vue3 + VitePWA 설정 예시입니다.
// vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { VitePWA } from 'vite-plugin-pwa'
export default defineConfig({
plugins: [
vue(),
VitePWA({
registerType: 'autoUpdate', // 새로운 파일이 있으면 service worker가 자동 업데이트
devOptions: {
enabled: true // 개발 중에도 service worker를 미리 보고 싶을 때 사용
},
workbox: {
globPatterns: ['**/*.{js,css,html,ico,png,svg}'] // 캐싱할 파일들 (빌드시 다이나믹 생성 파일도 포함)
},
includeAssets: ['apple-touch-icon.png'], // public 폴더 내 추가 캐싱 파일
manifest: {
name: '테스트용 Vue3 앱',
short_name: 'MyApp',
description: '설명',
theme_color: '#000000',
icons: [
{
src: 'logo.png',
sizes: '192x192',
type: 'image/png'
},
{
src: 'logo.png',
sizes: '512x512',
type: 'image/png'
}
]
// display: 'standalone' 등 추가 설정 가능 (주소창 제거 효과 등)
}
})
],
})
npm run build 명령어로 빌드하면 dist 폴더가 생성됩니다.또는 에디터의 Live Server 확장 프로그램으로 미리보기합니다.
```bash
npx serve .
```
PWA에서는 사용자가 설치를 원할 때, 설치 유도 팝업을 띄울 수 있습니다.
자동으로 띄워지진 않고, 사용자가 상호작용할 때 실행해야 합니다.
<script setup> 사용 예시<template>
<button @click="triggerInstall">앱 설치하기</button>
</template>
<script setup>
import { ref, onMounted } from 'vue'
// beforeinstallprompt 이벤트를 저장할 ref
const installPromptEvent = ref(null)
// 컴포넌트가 마운트될 때 이벤트 리스너 등록
onMounted(() => {
window.addEventListener("beforeinstallprompt", (e) => {
e.preventDefault() // 기본 동작 차단 (브라우저에서 자동으로 띄우지 않도록)
installPromptEvent.value = e // 이벤트 객체를 저장
})
})
// 버튼 클릭 시, 저장된 이벤트를 이용해 설치 팝업 실행
function triggerInstall() {
if (installPromptEvent.value) {
installPromptEvent.value.prompt() // 설치 팝업 실행
}
}
</script>
<script setup> 문법을 사용하여, beforeinstallprompt 이벤트를 캡처하고, 사용자가 버튼 클릭 시 설치 유도 팝업을 실행합니다.참고: 최근 모바일 브라우저 정책 변경으로 인해 일부 환경에서는 설치 팝업이 뜨지 않을 수 있습니다.