@@ -109,7 +109,7 @@ export interface ModuleOptions {
109
109
/**
110
110
* Extra component directories that should be used to resolve components.
111
111
*
112
- * @default ['OgImage', 'OgImageTemplate']
112
+ * @default ['OgImage', 'og-image', ' OgImageTemplate']
113
113
*/
114
114
componentDirs : string [ ]
115
115
/**
@@ -146,6 +146,8 @@ function isProviderEnabledForEnv(provider: keyof CompatibilityFlags, nuxt: Nuxt,
146
146
return ( nuxt . options . dev && config . compatibility ?. dev ?. [ provider ] !== false ) || ( ! nuxt . options . dev && ( config . compatibility ?. runtime ?. [ provider ] !== false || config . compatibility ?. prerender ?. [ provider ] !== false ) )
147
147
}
148
148
149
+ const defaultComponentDirs = [ 'OgImage' , 'og-image' , 'OgImageTemplate' ]
150
+
149
151
export default defineNuxtModule < ModuleOptions > ( {
150
152
meta : {
151
153
name : 'nuxt-og-image' ,
@@ -168,7 +170,7 @@ export default defineNuxtModule<ModuleOptions>({
168
170
// default is to cache the image for 3 day (72 hours)
169
171
cacheMaxAgeSeconds : 60 * 60 * 24 * 3 ,
170
172
} ,
171
- componentDirs : [ 'OgImage' , 'OgImageTemplate' ] ,
173
+ componentDirs : defaultComponentDirs ,
172
174
fonts : [ ] ,
173
175
runtimeCacheStorage : true ,
174
176
debug : isDevelopment ,
@@ -476,6 +478,19 @@ export default defineNuxtModule<ModuleOptions>({
476
478
addPlugin ( { mode : 'server' , src : resolve ( `${ basePluginPath } /route-rule-og-image.server` ) } )
477
479
addPlugin ( { mode : 'server' , src : resolve ( `${ basePluginPath } /og-image-canonical-urls.server` ) } )
478
480
481
+ for ( const componentDir of config . componentDirs ) {
482
+ const path = resolve ( nuxt . options . srcDir , 'components' , componentDir )
483
+ if ( existsSync ( path ) ) {
484
+ addComponentsDir ( {
485
+ path,
486
+ island : true ,
487
+ } )
488
+ }
489
+ else if ( ! defaultComponentDirs . includes ( componentDir ) ) {
490
+ logger . warn ( `The configured component directory \`./${ relative ( nuxt . options . rootDir , path ) } \` does not exist. Skipping.` )
491
+ }
492
+ }
493
+
479
494
// we're going to expose the og image components to the ssr build so we can fix prop usage
480
495
const ogImageComponentCtx : { components : OgImageComponent [ ] } = { components : [ ] }
481
496
nuxt . hook ( 'components:extend' , ( components ) => {
0 commit comments