unplugin-vue-components

repository·main·Indexed 26 days ago

https://github.com/unplugin/unplugin-vue-components

A tree-shakable plugin providing on-demand component auto-importing for Vue projects. It supports multiple build tools including Vite, Webpack, Rollup, Rolldown, Rspack, and esbuild, as well as Quasar. The plugin includes built-in resolvers for UI libraries like Ant Design Vue, Element Plus, and Vant, and supports TypeScript via automatic generation of a components.d.ts file.

Tokens
8.3K
Snippets
20
Records
44
Agent score
87%

What's inside unplugin-vue-components

  1. Import components from UI Libraries using Resolvers

    main

    Use built-in resolvers to automatically import components from popular UI libraries like Ant Design Vue, Element Plus, or Vant. Import the specific resolver from unplugin-vue-components/resolvers and pass it to the resolvers option.

    import {
      AntDesignVueResolver,
      ElementPlusResolver,
      VantResolver,
    } from 'unplugin-vue-components/resolvers'
    // vite.config.js
    import Components from 'unplugin-vue-components/vite'
    
    // your plugin installation
    Components({
      resolvers: [
        AntDesignVueResolver(),
        ElementPlusResolver(),
        VantResolver(),
      ],
    })
  2. Configure unplugin-vue-components for Vite

    main

    To use the plugin in a Vite project, import Components from unplugin-vue-components/vite and add it to your plugins array in vite.config.ts.

    // vite.config.ts
    import Components from 'unplugin-vue-components/vite'
    
    export default defineConfig({
      plugins: [
        Components({ /* options */ }),
      ],
    })
  3. Configure unplugin-vue-components for Webpack

    main

    To use the plugin in a Webpack project, import Components from unplugin-vue-components/webpack. Note that support for CommonJS was removed after version 29.1.0.

    // webpack.config.js
    // unplugin-vue-components removed support for CommonJS after version 29.1.0
    module.exports = {
      /* ... */
      plugins: [
        require('unplugin-vue-components/webpack')({ /* options */ }),
      ],
    }
  4. Use custom resolvers from external UI libraries

    main

    To avoid maintenance overhead in the core repository, unplugin-vue-components encourages UI libraries to publish their own resolvers as separate packages. If you are using a UI library that provides its own resolver, import it directly and add it to the resolvers array in your configuration.

    Instead of requesting new resolvers be added to the unplugin-vue-components repository, you should use the resolver provided by the library itself.

    import MyLibResolver from 'my-lib/auto-import-resolver' // <--
    
    import Components from 'unplugin-vue-components'
    
    export default defineConfig({
      plugins: [
        Components({
          resolvers: [
            MyLibResolver
          ]
        })
      ]
    })
  5. Configure unplugin-vue-components for Quasar

    main

    For Quasar projects using Vite, you can configure the plugin within the build.vitePlugins section of quasar.config.js.

    // quasar.config.js
    export default defineConfig(() => {
      return {
        build: {
          vitePlugins: [
            ['unplugin-vue-components/vite', { /* options */ }],
          ]
        },
      }
    })
  6. Migrate from `vite-plugin-components`

    main

    When migrating from vite-plugin-components to unplugin-vue-components, note the following configuration key renames:

    • customComponentsResolvers $\rightarrow$ resolvers
    • globalComponentsDeclaration $\rightarrow$ dts
    • customLoaderMatcher $\rightarrow$ include (use an array of patterns instead)
    // vite.config.js
    - import Components, { ElementPlusResolver } from 'vite-plugin-components'
    + import Components from 'unplugin-vue-components/vite'
    + import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
    
    export default {
      plugins: [
        /* ... */
        Components({
          /* ... */
    
          // `customComponentsResolvers` has renamed to `resolver` 
    -     customComponentsResolvers: [
    +     resolvers: [
            ElementPlusResolver(),
          ],
    
          // `globalComponentsDeclaration` has renamed to `dts` 
    -     globalComponentsDeclaration: true,
    +     dts: true,
    
          // `customLoaderMatcher` is depreacted, use `include` instead
    -     customLoaderMatcher: id => id.endsWith('.md'),
    +     include: [/\.vue$/, /\.vue\?vue/, /\.vue\.[tj]sx?\?vue/, /\.md$/],
        }),
      ],
    }
  7. Configure unplugin-vue-components for Rspack

    main

    To use the plugin in an Rspack project, import Components from unplugin-vue-components/rspack. Note that support for CommonJS was removed after version 29.1.0.

    // rspack.config.js
    // unplugin-vue-components removed support for CommonJS after version 29.1.0
    module.exports = {
      /* ... */
      plugins: [
        require('unplugin-vue-components/rspack')({ /* options */ }),
      ],
    }
  8. Enable TypeScript support

    main

    To enable TypeScript support for auto-imported components, set dts: true in the plugin configuration. This will generate a components.d.ts file. Ensure you add components.d.ts to the include array in your tsconfig.json.

    Components({
      dts: true, // enabled by default if `typescript` is installed
    })
  9. Configure unplugin-vue-components for esbuild

    main

    To use the plugin in an esbuild project, import Components from unplugin-vue-components/esbuild and add it to the plugins array in your esbuild configuration.

    // esbuild.config.js
    import { build } from 'esbuild'
    import Components from 'unplugin-vue-components/esbuild'
    
    build({
      /* ... */
      plugins: [
        Components({
          /* options */
        }),
      ],
    })
  10. Configure unplugin-vue-components for Rolldown

    main

    To use the plugin in a Rolldown project, import Components from unplugin-vue-components/rolldown and add it to your plugins array in rolldown.config.js.

    // rolldown.config.js
    import Components from 'unplugin-vue-components/rolldown'
    
    export default {
      plugins: [
        Components({ /* options */ }),
      ],
    }
  11. Configure unplugin-vue-components for Rollup

    main

    To use the plugin in a Rollup project, import Components from unplugin-vue-components/rollup and add it to your plugins array in rollup.config.js.

    // rollup.config.js
    import Components from 'unplugin-vue-components/rollup'
    
    export default {
      plugins: [
        Components({ /* options */ }),
      ],
    }