Skip to content

Commit 13bd536

Browse files
committed
feat: add directives option
1 parent 842be9f commit 13bd536

File tree

4 files changed

+22
-2
lines changed

4 files changed

+22
-2
lines changed

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ On-demand components auto importing for Vue.
77
###### Features
88

99
- 💚 Supports both Vue 2 and Vue 3 out-of-the-box.
10+
- ✨ Supports both components and directives.
1011
- ⚡️ Supports Vite, Webpack, Vue CLI, Rollup and more, powered by <a href="https://github.com/unjs/unplugin">unplugin</a>.
1112
- 🏝 Tree-shakable, only registers the components you use.
1213
- 🪐 Folder names as namespaces.
@@ -284,6 +285,11 @@ Components({
284285
// works when `directoryAsNamespace: true`
285286
globalNamespaces: [],
286287

288+
// auto import for directives
289+
// default: `true` for Vue 3, `false` for Vue 2
290+
// For Vue 2, there may be performance losses during compilation and runtime.
291+
directives: true,
292+
287293
// filters for transforming targets
288294
include: [/\.vue$/, /\.vue\?vue/],
289295
exclude: [/[\\/]node_modules[\\/]/, /[\\/]\.git[\\/]/, /[\\/]\.nuxt[\\/]/],

src/core/options.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { isPackageExists } from 'local-pkg'
44
import { ResolvedOptions, Options } from '../types'
55
import { LibraryResolver } from './helpers/libraryResolver'
66

7-
export const defaultOptions: Omit<Required<Options>, 'include' | 'exclude' | 'transformer' | 'globs'> = {
7+
export const defaultOptions: Omit<Required<Options>, 'include' | 'exclude' | 'transformer' | 'globs' |'directives'> = {
88
dirs: 'src/components',
99
extensions: 'vue',
1010
deep: true,
@@ -58,6 +58,9 @@ export function resolveOptions(options: Options, root: string): ResolvedOptions
5858
)
5959
resolved.root = root
6060
resolved.transformer = options.transformer || getVueVersion() || 'vue3'
61+
resolved.directives = (typeof options.directives === 'boolean')
62+
? options.directives
63+
: getVueVersion() === 'vue3'
6164

6265
return resolved
6366
}

src/core/transformer.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ export default (ctx: Context, version: VueVersion): Transformer => {
2525
const s = new MagicString(code)
2626

2727
await transformComponent(code, version, s, ctx, sfcPath)
28-
await transformDirectives(code, version, s, ctx, sfcPath)
28+
if (ctx.options.directives)
29+
await transformDirectives(code, version, s, ctx, sfcPath)
2930

3031
s.prepend(DISABLE_COMMENT)
3132

src/types.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,16 @@ export interface Options {
123123
* @default false
124124
*/
125125
allowOverrides?: boolean
126+
127+
/**
128+
* auto import for directives.
129+
*
130+
* default: `true` for Vue 3, `false` for Vue 2
131+
*
132+
* For Vue 2, there may be performance losses during compilation and runtime.
133+
* @default undefined
134+
*/
135+
directives?: boolean
126136
}
127137

128138
export type ResolvedOptions = Omit<

0 commit comments

Comments
 (0)