Skip to content

Commit

Permalink
feat: include option to generate components meta
Browse files Browse the repository at this point in the history
  • Loading branch information
farnabaz committed Jan 13, 2025
1 parent 9e638d1 commit 6807b69
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 4 deletions.
24 changes: 20 additions & 4 deletions src/module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ export default defineNuxtModule<ModuleOptions>({
'nuxt/dist/app/components/nuxt-route-announcer',
'nuxt/dist/app/components/nuxt-stubs',
],
include: [],
metaFields: {
type: true,
props: true,
Expand Down Expand Up @@ -107,6 +108,24 @@ export default defineNuxtModule<ModuleOptions>({
async setup (options, nuxt) {
const resolver = createResolver(import.meta.url)

const isComponentIncluded = (component: any) => {
if (!options?.globalsOnly) { return true }

if (component.global) { return true }

return (options.include || []).find((excludeRule) => {
switch (typeof excludeRule) {
case 'string':
return component.pascalName === excludeRule || component.filePath.includes(excludeRule)
case 'object':
return excludeRule instanceof RegExp ? excludeRule.test(component.filePath) : false
case 'function':
return excludeRule(component)
default:
return false
}
})
}

// Retrieve transformers
let transformers = options?.transformers || []
Expand Down Expand Up @@ -148,10 +167,7 @@ export default defineNuxtModule<ModuleOptions>({
})

nuxt.hook('components:extend', async (_components) => {
components = _components

// Support `globalsOnly` option
if (options?.globalsOnly) { components = components.filter(c => c.global) }
components = _components.filter(isComponentIncluded)

// Load external components definitions
metaSources = await loadExternalSources(options.metaSources)
Expand Down
4 changes: 4 additions & 0 deletions src/options.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ export interface ModuleOptions {
* Component paths and/or path regexps to be excluded.
*/
exclude?: (string | RegExp | ((component: any) => boolean))[]
/**
* Component paths and/or path regexps to be included.
*/
include?: (string | RegExp | ((component: any) => boolean))[]
/**
* vue-component-meta checker options.
*/
Expand Down

0 comments on commit 6807b69

Please sign in to comment.