@@ -43,6 +43,7 @@ export default defineNuxtModule<ModuleOptions>({
43
43
'nuxt/dist/app/components/nuxt-route-announcer' ,
44
44
'nuxt/dist/app/components/nuxt-stubs' ,
45
45
] ,
46
+ include : [ ] ,
46
47
metaFields : {
47
48
type : true ,
48
49
props : true ,
@@ -107,6 +108,24 @@ export default defineNuxtModule<ModuleOptions>({
107
108
async setup ( options , nuxt ) {
108
109
const resolver = createResolver ( import . meta. url )
109
110
111
+ const isComponentIncluded = ( component : any ) => {
112
+ if ( ! options ?. globalsOnly ) { return true }
113
+
114
+ if ( component . global ) { return true }
115
+
116
+ return ( options . include || [ ] ) . find ( ( excludeRule ) => {
117
+ switch ( typeof excludeRule ) {
118
+ case 'string' :
119
+ return component . pascalName === excludeRule || component . filePath . includes ( excludeRule )
120
+ case 'object' :
121
+ return excludeRule instanceof RegExp ? excludeRule . test ( component . filePath ) : false
122
+ case 'function' :
123
+ return excludeRule ( component )
124
+ default :
125
+ return false
126
+ }
127
+ } )
128
+ }
110
129
111
130
// Retrieve transformers
112
131
let transformers = options ?. transformers || [ ]
@@ -148,10 +167,7 @@ export default defineNuxtModule<ModuleOptions>({
148
167
} )
149
168
150
169
nuxt . hook ( 'components:extend' , async ( _components ) => {
151
- components = _components
152
-
153
- // Support `globalsOnly` option
154
- if ( options ?. globalsOnly ) { components = components . filter ( c => c . global ) }
170
+ components = _components . filter ( isComponentIncluded )
155
171
156
172
// Load external components definitions
157
173
metaSources = await loadExternalSources ( options . metaSources )
0 commit comments