@@ -7,9 +7,7 @@ import { createSvgIconsPlugin } from "vite-plugin-svg-icons";
77import viteCompression from "vite-plugin-compression" ;
88import { VitePWA } from "vite-plugin-pwa" ;
99
10- const version = JSON . parse (
11- fs . readFileSync ( path . join ( __dirname , "package.json" ) , "utf-8" )
12- ) . version . trim ( ) ;
10+ const version = JSON . parse ( fs . readFileSync ( path . join ( __dirname , "package.json" ) , "utf-8" ) ) . version . trim ( ) ;
1311
1412const alias : Record < string , string > = {
1513 "@" : path . resolve ( __dirname , "src" ) ,
@@ -106,43 +104,26 @@ const viteConfig = defineConfig((mode: ConfigEnv) => {
106104 ] ,
107105 } ,
108106 workbox : {
109- maximumFileSizeToCacheInBytes : 3 * 1024 * 1024 ,
110- navigateFallbackDenylist : [ / ( ^ | \/ .+ ) \/ ( a p i | d o w n l o a d | s h a r e ) \/ .+ / ] ,
111- // globPatterns: ['**/*.{css,js,gz,eot,html,svg,png,ico,ttf,woff2}'],
107+ globPatterns : [ "**/*.{js,css,html,ico,png,svg,webmanifest,json}" ] ,
108+ navigateFallback : "/index.html" ,
112109 runtimeCaching : [
113110 {
114- urlPattern : / ( ^ | \/ .+ ) \/ ( a p i | d o w n l o a d | s h a r e ) \/ .+ / ,
115- handler : "NetworkOnly" ,
116- } ,
117- {
118- urlPattern : / .* \. (?: j s | c s s | g z | h t m l | j s o n ) / i, // json
119- handler : "CacheFirst" ,
111+ urlPattern : ( { url, request } ) => request . destination === "script" && url . origin === self . location . origin ,
112+ handler : "StaleWhileRevalidate" ,
120113 options : {
121- cacheName : "sub-store-js-cache" ,
122- expiration : {
123- maxEntries : 30 ,
124- maxAgeSeconds : 60 * 60 * 24 * 30 ,
125- } ,
126- cacheableResponse : {
127- statuses : [ 200 ] ,
128- } ,
114+ cacheName : "js-cache" ,
129115 } ,
130116 } ,
131117 {
132- urlPattern : / h t t p s : \/ \/ a v a t a r s \. g i t h u b u s e r c o n t e n t \. c o m \/ u \/ \d + (?: \? . * ) ? $ | . * \. (?: p n g | s v g | i c o | j p e ? g | w e b p | a v i f | g i f | w o f f 2 ? | t t f | e o t | o t f ) (?: \? . * ) ? $ / i ,
118+ urlPattern : ( { request } ) => request . destination === "style" || request . destination === "image" || request . destination === "font" ,
133119 handler : "CacheFirst" ,
134120 options : {
135- cacheName : "sub-store-res-cache" ,
136- expiration : {
137- maxEntries : 300 ,
138- maxAgeSeconds : 60 * 60 * 24 * 365 ,
139- } ,
140- cacheableResponse : {
141- statuses : [ 0 , 200 ] ,
142- } ,
121+ cacheName : "asset-cache" ,
143122 } ,
144123 } ,
145124 ] ,
125+ skipWaiting : true ,
126+ clientsClaim : true ,
146127 } ,
147128 selfDestroying : false ,
148129 } ) ,
@@ -174,26 +155,20 @@ const viteConfig = defineConfig((mode: ConfigEnv) => {
174155 entryFileNames : "[name].js" ,
175156 chunkFileNames : "chunks/[name]-[hash].js" ,
176157 assetFileNames : ( assetInfo ) => {
177- const ext = assetInfo . name ?. split ( '.' ) . pop ( ) ?. toLowerCase ( ) ?? '' ;
178- if ( / ^ ( p n g | j p e ? g | s v g | w e b p | a v i f | g i f | i c o ) $ / . test ( ext ) ) return ' images/[name].[ext]' ;
179- if ( / ^ ( w o f f 2 ? | t t f | e o t | o t f ) $ / . test ( ext ) ) return ' fonts/[name].[ext]' ;
180- if ( ext === ' css' ) return ' css/[name].[ext]' ;
181- return ' [name].[ext]' ;
158+ const ext = assetInfo . name ?. split ( "." ) . pop ( ) ?. toLowerCase ( ) ?? "" ;
159+ if ( / ^ ( p n g | j p e ? g | s v g | w e b p | a v i f | g i f | i c o ) $ / . test ( ext ) ) return " images/[name].[ext]" ;
160+ if ( / ^ ( w o f f 2 ? | t t f | e o t | o t f ) $ / . test ( ext ) ) return " fonts/[name].[ext]" ;
161+ if ( ext === " css" ) return " css/[name].[ext]" ;
162+ return " [name].[ext]" ;
182163 } ,
183164 manualChunks ( id ) {
184- if ( id . includes ( 'node_modules' ) ) {
185- if ( id . includes ( '@nutui/nutui' ) || ( id . includes ( '@nutui' ) && ! id . includes ( '@nutui/icons' ) ) ) return 'nutui' ;
186- if (
187- id . includes ( '/codemirror/' ) ||
188- id . includes ( '@codemirror/' ) ||
189- id . includes ( '@lezer/' ) ||
190- id . includes ( '@replit/codemirror' ) ||
191- id . includes ( 'js-beautify' )
192- ) return 'editor' ;
193- if ( id . includes ( 'vue-i18n' ) || id . includes ( '@intlify/' ) ) return 'i18n' ;
194- if ( id . includes ( '@fortawesome/' ) ) return 'icons' ;
195- if ( id . includes ( '@vuepic/vue-datepicker' ) ) return 'datepicker' ;
196- if ( id . includes ( '/vue/' ) || id . includes ( '/vue-router/' ) || id . includes ( '/pinia/' ) || id . includes ( '@vue/' ) || id . includes ( '@vueuse/' ) ) return 'vue-vendor' ;
165+ if ( id . includes ( "node_modules" ) ) {
166+ if ( id . includes ( "@nutui/nutui" ) || ( id . includes ( "@nutui" ) && ! id . includes ( "@nutui/icons" ) ) ) return "nutui" ;
167+ if ( id . includes ( "/codemirror/" ) || id . includes ( "@codemirror/" ) || id . includes ( "@lezer/" ) || id . includes ( "@replit/codemirror" ) || id . includes ( "js-beautify" ) ) return "editor" ;
168+ if ( id . includes ( "vue-i18n" ) || id . includes ( "@intlify/" ) ) return "i18n" ;
169+ if ( id . includes ( "@fortawesome/" ) ) return "icons" ;
170+ if ( id . includes ( "@vuepic/vue-datepicker" ) ) return "datepicker" ;
171+ if ( id . includes ( "/vue/" ) || id . includes ( "/vue-router/" ) || id . includes ( "/pinia/" ) || id . includes ( "@vue/" ) || id . includes ( "@vueuse/" ) ) return "vue-vendor" ;
197172 }
198173 } ,
199174 } ,
0 commit comments