@@ -111,34 +111,42 @@ export function setupPublicAssetStrategy(options: ModuleOptions['assets'] = {})
111111 } satisfies NitroConfig )
112112
113113 // TODO: refactor to use nitro storage when it can be cached between builds
114- nuxt . hook ( 'nitro:init' , async ( nitro ) => {
114+ nuxt . hook ( 'nitro:init' , ( nitro ) => {
115115 if ( nuxt . options . dev ) {
116116 return
117117 }
118- nuxt . hook ( 'build:done' , ( ) => {
119- nitro . hooks . hook ( 'rollup:before' , async ( ) => {
120- await fsp . rm ( cacheDir , { recursive : true , force : true } )
121- await fsp . mkdir ( cacheDir , { recursive : true } )
122- let banner = false
123- for ( const [ filename , url ] of renderedFontURLs ) {
124- const key = 'data:fonts:' + filename
125- // Use storage to cache the font data between builds
126- let res = await storage . getItemRaw ( key )
127- if ( ! res ) {
128- if ( ! banner ) {
129- banner = true
130- logger . info ( 'Downloading fonts...' )
131- }
132- logger . log ( chalk . gray ( ' ├─ ' + url ) )
133- res = await fetch ( url ) . then ( r => r . arrayBuffer ( ) ) . then ( r => Buffer . from ( r ) )
134- await storage . setItemRaw ( key , res )
118+ let built = false
119+ nuxt . hook ( 'vite:compiled' , ( ) => {
120+ built = true
121+ } )
122+ nuxt . hook ( 'webpack:compiled' , ( ) => {
123+ built = true
124+ } )
125+ nitro . hooks . hook ( 'rollup:before' , async ( ) => {
126+ if ( ! built ) {
127+ return
128+ }
129+ await fsp . rm ( cacheDir , { recursive : true , force : true } )
130+ await fsp . mkdir ( cacheDir , { recursive : true } )
131+ let banner = false
132+ for ( const [ filename , url ] of renderedFontURLs ) {
133+ const key = 'data:fonts:' + filename
134+ // Use storage to cache the font data between builds
135+ let res = await storage . getItemRaw ( key )
136+ if ( ! res ) {
137+ if ( ! banner ) {
138+ banner = true
139+ logger . info ( 'Downloading fonts...' )
135140 }
136- await fsp . writeFile ( join ( cacheDir , filename ) , res )
137- }
138- if ( banner ) {
139- logger . success ( 'Fonts downloaded and cached.' )
141+ logger . log ( chalk . gray ( ' ├─ ' + url ) )
142+ res = await fetch ( url ) . then ( r => r . arrayBuffer ( ) ) . then ( r => Buffer . from ( r ) )
143+ await storage . setItemRaw ( key , res )
140144 }
141- } )
145+ await fsp . writeFile ( join ( cacheDir , filename ) , res )
146+ }
147+ if ( banner ) {
148+ logger . success ( 'Fonts downloaded and cached.' )
149+ }
142150 } )
143151 } )
144152
0 commit comments