feat: supports imports option for auto-import (#12861)

Co-authored-by: 赵江江 <zhaojiangjiang@kingyee.com.cn>
This commit is contained in:
zhaojjiang 2024-05-18 20:39:28 +08:00 committed by GitHub
parent 413150a4ab
commit 96cbb04bc0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 68 additions and 30 deletions

View File

@ -34,11 +34,12 @@ bun add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import
// vite.config.ts // vite.config.ts
import AutoImport from 'unplugin-auto-import/vite'; import AutoImport from 'unplugin-auto-import/vite';
import Components from 'unplugin-vue-components/vite'; import Components from 'unplugin-vue-components/vite';
import { VantResolver } from '@vant/auto-import-resolver'; import { VantResolver, VantImports } from '@vant/auto-import-resolver';
export default defineConfig({ export default defineConfig({
plugins: [ plugins: [
AutoImport({ AutoImport({
imports: [VantImports()],
resolvers: [VantResolver()], resolvers: [VantResolver()],
}), }),
Components({ Components({
@ -54,11 +55,12 @@ export default defineConfig({
// rollup.config.js // rollup.config.js
import AutoImport from 'unplugin-auto-import/rollup'; import AutoImport from 'unplugin-auto-import/rollup';
import Components from 'unplugin-vue-components/rollup'; import Components from 'unplugin-vue-components/rollup';
import { VantResolver } from '@vant/auto-import-resolver'; import { VantResolver, VantImports } from '@vant/auto-import-resolver';
export default { export default {
plugins: [ plugins: [
AutoImport({ AutoImport({
imports: [VantImports()],
resolvers: [VantResolver()], resolvers: [VantResolver()],
}), }),
Components({ Components({
@ -74,11 +76,12 @@ export default {
// webpack.config.js // webpack.config.js
import AutoImport from 'unplugin-auto-import/webpack'; import AutoImport from 'unplugin-auto-import/webpack';
import Components from 'unplugin-vue-components/webpack'; import Components from 'unplugin-vue-components/webpack';
import { VantResolver } from '@vant/auto-import-resolver'; import { VantResolver, VantImports } from '@vant/auto-import-resolver';
module.exports = { module.exports = {
plugins: [ plugins: [
AutoImport({ AutoImport({
imports: [VantImports()],
resolvers: [VantResolver()], resolvers: [VantResolver()],
}), }),
Components({ Components({
@ -94,11 +97,12 @@ module.exports = {
// rspack.config.js // rspack.config.js
import AutoImport from 'unplugin-auto-import/rspack'; import AutoImport from 'unplugin-auto-import/rspack';
import Components from 'unplugin-vue-components/rspack'; import Components from 'unplugin-vue-components/rspack';
import { VantResolver } from '@vant/auto-import-resolver'; import { VantResolver, VantImports } from '@vant/auto-import-resolver';
module.exports = { module.exports = {
plugins: [ plugins: [
AutoImport({ AutoImport({
imports: [VantImports()],
resolvers: [VantResolver()], resolvers: [VantResolver()],
}), }),
Components({ Components({
@ -114,12 +118,13 @@ module.exports = {
// vue.config.js // vue.config.js
import AutoImport from 'unplugin-auto-import/webpack'; import AutoImport from 'unplugin-auto-import/webpack';
import Components from 'unplugin-vue-components/webpack'; import Components from 'unplugin-vue-components/webpack';
import { VantResolver } from '@vant/auto-import-resolver'; import { VantResolver, VantImports } from '@vant/auto-import-resolver';
module.exports = { module.exports = {
configureWebpack: { configureWebpack: {
plugins: [ plugins: [
AutoImport({ AutoImport({
imports: [VantImports()],
resolvers: [VantResolver()], resolvers: [VantResolver()],
}), }),
Components({ Components({
@ -137,11 +142,12 @@ module.exports = {
import { build } from 'esbuild'; import { build } from 'esbuild';
import AutoImport from 'unplugin-auto-import/esbuild'; import AutoImport from 'unplugin-auto-import/esbuild';
import Components from 'unplugin-vue-components/esbuild'; import Components from 'unplugin-vue-components/esbuild';
import { VantResolver } from '@vant/auto-import-resolver'; import { VantResolver, VantImports } from '@vant/auto-import-resolver';
build({ build({
plugins: [ plugins: [
AutoImport({ AutoImport({
imports: [VantImports()],
resolvers: [VantResolver()], resolvers: [VantResolver()],
}), }),
Components({ Components({

View File

@ -34,11 +34,12 @@ bun add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import
// vite.config.ts // vite.config.ts
import AutoImport from 'unplugin-auto-import/vite'; import AutoImport from 'unplugin-auto-import/vite';
import Components from 'unplugin-vue-components/vite'; import Components from 'unplugin-vue-components/vite';
import { VantResolver } from '@vant/auto-import-resolver'; import { VantResolver, VantImports } from '@vant/auto-import-resolver';
export default defineConfig({ export default defineConfig({
plugins: [ plugins: [
AutoImport({ AutoImport({
imports: [VantImports()],
resolvers: [VantResolver()], resolvers: [VantResolver()],
}), }),
Components({ Components({
@ -54,11 +55,12 @@ export default defineConfig({
// rollup.config.js // rollup.config.js
import AutoImport from 'unplugin-auto-import/rollup'; import AutoImport from 'unplugin-auto-import/rollup';
import Components from 'unplugin-vue-components/rollup'; import Components from 'unplugin-vue-components/rollup';
import { VantResolver } from '@vant/auto-import-resolver'; import { VantResolver, VantImports } from '@vant/auto-import-resolver';
export default { export default {
plugins: [ plugins: [
AutoImport({ AutoImport({
imports: [VantImports()],
resolvers: [VantResolver()], resolvers: [VantResolver()],
}), }),
Components({ Components({
@ -74,11 +76,12 @@ export default {
// webpack.config.js // webpack.config.js
import AutoImport from 'unplugin-auto-import/webpack'; import AutoImport from 'unplugin-auto-import/webpack';
import Components from 'unplugin-vue-components/webpack'; import Components from 'unplugin-vue-components/webpack';
import { VantResolver } from '@vant/auto-import-resolver'; import { VantResolver, VantImports } from '@vant/auto-import-resolver';
module.exports = { module.exports = {
plugins: [ plugins: [
AutoImport({ AutoImport({
imports: [VantImports()],
resolvers: [VantResolver()], resolvers: [VantResolver()],
}), }),
Components({ Components({
@ -94,11 +97,12 @@ module.exports = {
// rspack.config.js // rspack.config.js
import AutoImport from 'unplugin-auto-import/rspack'; import AutoImport from 'unplugin-auto-import/rspack';
import Components from 'unplugin-vue-components/rspack'; import Components from 'unplugin-vue-components/rspack';
import { VantResolver } from '@vant/auto-import-resolver'; import { VantResolver, VantImports } from '@vant/auto-import-resolver';
module.exports = { module.exports = {
plugins: [ plugins: [
AutoImport({ AutoImport({
imports: [VantImports()],
resolvers: [VantResolver()], resolvers: [VantResolver()],
}), }),
Components({ Components({
@ -114,12 +118,13 @@ module.exports = {
// vue.config.js // vue.config.js
import AutoImport from 'unplugin-auto-import/webpack'; import AutoImport from 'unplugin-auto-import/webpack';
import Components from 'unplugin-vue-components/webpack'; import Components from 'unplugin-vue-components/webpack';
import { VantResolver } from '@vant/auto-import-resolver'; import { VantResolver, VantImports } from '@vant/auto-import-resolver';
module.exports = { module.exports = {
configureWebpack: { configureWebpack: {
plugins: [ plugins: [
AutoImport({ AutoImport({
imports: [VantImports()],
resolvers: [VantResolver()], resolvers: [VantResolver()],
}), }),
Components({ Components({
@ -137,11 +142,12 @@ module.exports = {
import { build } from 'esbuild'; import { build } from 'esbuild';
import AutoImport from 'unplugin-auto-import/esbuild'; import AutoImport from 'unplugin-auto-import/esbuild';
import Components from 'unplugin-vue-components/esbuild'; import Components from 'unplugin-vue-components/esbuild';
import { VantResolver } from '@vant/auto-import-resolver'; import { VantResolver, VantImports } from '@vant/auto-import-resolver';
build({ build({
plugins: [ plugins: [
AutoImport({ AutoImport({
imports: [VantImports()],
resolvers: [VantResolver()], resolvers: [VantResolver()],
}), }),
Components({ Components({

View File

@ -23,6 +23,8 @@ export interface VantResolverOptions {
ssr?: boolean; ssr?: boolean;
} }
export type VantImportsOptions = Pick<VantResolverOptions, 'module' | 'ssr'>;
/** /**
* Button->button; ButtonGroup->button-group * Button->button; ButtonGroup->button-group
*/ */
@ -124,3 +126,11 @@ export function VantResolver(options: VantResolverOptions = {}) {
}, },
}; };
} }
export function VantImports(options: VantImportsOptions = {}) {
const moduleType = getModuleType(options);
return {
[`vant/${moduleType}`]: getAPIMap().keys(),
};
}

View File

@ -152,7 +152,7 @@ import { defineConfig } from '@rsbuild/core';
import { pluginVue } from '@rsbuild/plugin-vue'; import { pluginVue } from '@rsbuild/plugin-vue';
import AutoImport from 'unplugin-auto-import/rspack'; import AutoImport from 'unplugin-auto-import/rspack';
import Components from 'unplugin-vue-components/rspack'; import Components from 'unplugin-vue-components/rspack';
import { VantResolver } from '@vant/auto-import-resolver'; import { VantResolver, VantImports } from '@vant/auto-import-resolver';
export default defineConfig({ export default defineConfig({
plugins: [pluginVue()], plugins: [pluginVue()],
@ -160,6 +160,7 @@ export default defineConfig({
rspack: { rspack: {
plugins: [ plugins: [
AutoImport({ AutoImport({
imports: [VantImports()],
resolvers: [VantResolver()], resolvers: [VantResolver()],
}), }),
Components({ Components({
@ -177,12 +178,13 @@ For Vite based projectconfigure the plugin in the `vite.config.js` file:
import vue from '@vitejs/plugin-vue'; import vue from '@vitejs/plugin-vue';
import AutoImport from 'unplugin-auto-import/vite'; import AutoImport from 'unplugin-auto-import/vite';
import Components from 'unplugin-vue-components/vite'; import Components from 'unplugin-vue-components/vite';
import { VantResolver } from '@vant/auto-import-resolver'; import { VantResolver, VantImports } from '@vant/auto-import-resolver';
export default { export default {
plugins: [ plugins: [
vue(), vue(),
AutoImport({ AutoImport({
imports: [VantImports()],
resolvers: [VantResolver()], resolvers: [VantResolver()],
}), }),
Components({ Components({
@ -195,7 +197,7 @@ export default {
For vue-cli based projectconfigure the plugin in the `vue.config.js` file: For vue-cli based projectconfigure the plugin in the `vue.config.js` file:
```js ```js
const { VantResolver } = require('@vant/auto-import-resolver'); const { VantResolver, VantImports } = require('@vant/auto-import-resolver');
const AutoImport = require('unplugin-auto-import/webpack'); const AutoImport = require('unplugin-auto-import/webpack');
const Components = require('unplugin-vue-components/webpack'); const Components = require('unplugin-vue-components/webpack');
@ -203,10 +205,13 @@ module.exports = {
configureWebpack: { configureWebpack: {
plugins: [ plugins: [
// When the version of unplugin-vue-components is less than 0.26.0: // When the version of unplugin-vue-components is less than 0.26.0:
AutoImport({ resolvers: [VantResolver()] }), AutoImport({ imports: [VantImports()], resolvers: [VantResolver()] }),
Components({ resolvers: [VantResolver()] }), Components({ resolvers: [VantResolver()] }),
// when the unplugin-vue-components version is greater than or equal to 0.26.0: // when the unplugin-vue-components version is greater than or equal to 0.26.0:
AutoImport.default({ resolvers: [VantResolver()] }), AutoImport.default({
imports: [VantImports()],
resolvers: [VantResolver()],
}),
Components.default({ resolvers: [VantResolver()] }), Components.default({ resolvers: [VantResolver()] }),
], ],
}, },
@ -216,17 +221,20 @@ module.exports = {
For webpack based projectconfigure the plugin in the `webpack.config.js` file: For webpack based projectconfigure the plugin in the `webpack.config.js` file:
```js ```js
const { VantResolver } = require('@vant/auto-import-resolver'); const { VantResolver, VantImports } = require('@vant/auto-import-resolver');
const AutoImport = require('unplugin-auto-import/webpack'); const AutoImport = require('unplugin-auto-import/webpack');
const Components = require('unplugin-vue-components/webpack'); const Components = require('unplugin-vue-components/webpack');
module.exports = { module.exports = {
plugins: [ plugins: [
// When the version of unplugin-vue-components is less than 0.26.0: // When the version of unplugin-vue-components is less than 0.26.0:
AutoImport({ resolvers: [VantResolver()] }), AutoImport({ imports: [VantImports()], resolvers: [VantResolver()] }),
Components({ resolvers: [VantResolver()] }), Components({ resolvers: [VantResolver()] }),
// when the unplugin-vue-components version is greater than or equal to 0.26.0: // when the unplugin-vue-components version is greater than or equal to 0.26.0:
AutoImport.default({ resolvers: [VantResolver()] }), AutoImport.default({
imports: [VantImports()],
resolvers: [VantResolver()],
}),
Components.default({ resolvers: [VantResolver()] }), Components.default({ resolvers: [VantResolver()] }),
], ],
}; };
@ -246,7 +254,7 @@ Then you can using components from Vant in the template, the `unplugin-vue-compo
```html ```html
<script> <script>
showToast('No need to import showToast') showToast('No need to import showToast');
</script> </script>
``` ```

View File

@ -174,7 +174,7 @@ import { defineConfig } from '@rsbuild/core';
import { pluginVue } from '@rsbuild/plugin-vue'; import { pluginVue } from '@rsbuild/plugin-vue';
import AutoImport from 'unplugin-auto-import/rspack'; import AutoImport from 'unplugin-auto-import/rspack';
import Components from 'unplugin-vue-components/rspack'; import Components from 'unplugin-vue-components/rspack';
import { VantResolver } from '@vant/auto-import-resolver'; import { VantResolver, VantImports } from '@vant/auto-import-resolver';
export default defineConfig({ export default defineConfig({
plugins: [pluginVue()], plugins: [pluginVue()],
@ -182,6 +182,7 @@ export default defineConfig({
rspack: { rspack: {
plugins: [ plugins: [
AutoImport({ AutoImport({
imports: [VantImports()],
resolvers: [VantResolver()], resolvers: [VantResolver()],
}), }),
Components({ Components({
@ -199,12 +200,13 @@ export default defineConfig({
import vue from '@vitejs/plugin-vue'; import vue from '@vitejs/plugin-vue';
import AutoImport from 'unplugin-auto-import/vite'; import AutoImport from 'unplugin-auto-import/vite';
import Components from 'unplugin-vue-components/vite'; import Components from 'unplugin-vue-components/vite';
import { VantResolver } from '@vant/auto-import-resolver'; import { VantResolver, VantImports } from '@vant/auto-import-resolver';
export default { export default {
plugins: [ plugins: [
vue(), vue(),
AutoImport({ AutoImport({
imports: [VantImports()],
resolvers: [VantResolver()], resolvers: [VantResolver()],
}), }),
Components({ Components({
@ -217,7 +219,7 @@ export default {
如果是基于 vue-cli 的项目,在 `vue.config.js` 文件中配置插件: 如果是基于 vue-cli 的项目,在 `vue.config.js` 文件中配置插件:
```js ```js
const { VantResolver } = require('@vant/auto-import-resolver'); const { VantResolver, VantImports } = require('@vant/auto-import-resolver');
const AutoImport = require('unplugin-auto-import/webpack'); const AutoImport = require('unplugin-auto-import/webpack');
const Components = require('unplugin-vue-components/webpack'); const Components = require('unplugin-vue-components/webpack');
@ -225,10 +227,13 @@ module.exports = {
configureWebpack: { configureWebpack: {
plugins: [ plugins: [
// 当 unplugin-vue-components 版本小于 0.26.0 时,使用以下写法 // 当 unplugin-vue-components 版本小于 0.26.0 时,使用以下写法
AutoImport({ resolvers: [VantResolver()] }), AutoImport({ imports: [VantImports()], resolvers: [VantResolver()] }),
Components({ resolvers: [VantResolver()] }), Components({ resolvers: [VantResolver()] }),
//当 unplugin-vue-components 版本大于等于 0.26.0 时,使用以下写法 //当 unplugin-vue-components 版本大于等于 0.26.0 时,使用以下写法
AutoImport.default({ resolvers: [VantResolver()] }), AutoImport.default({
imports: [VantImports()],
resolvers: [VantResolver()],
}),
Components.default({ resolvers: [VantResolver()] }), Components.default({ resolvers: [VantResolver()] }),
], ],
}, },
@ -238,17 +243,20 @@ module.exports = {
如果是基于 webpack 的项目,在 `webpack.config.js` 文件中配置插件: 如果是基于 webpack 的项目,在 `webpack.config.js` 文件中配置插件:
```js ```js
const { VantResolver } = require('@vant/auto-import-resolver'); const { VantResolver, VantImports } = require('@vant/auto-import-resolver');
const AutoImport = require('unplugin-auto-import/webpack'); const AutoImport = require('unplugin-auto-import/webpack');
const Components = require('unplugin-vue-components/webpack'); const Components = require('unplugin-vue-components/webpack');
module.exports = { module.exports = {
plugins: [ plugins: [
// 当 unplugin-vue-components 版本小于 0.26.0 时,使用以下写法 // 当 unplugin-vue-components 版本小于 0.26.0 时,使用以下写法
AutoImport({ resolvers: [VantResolver()] }), AutoImport({ imports: [VantImports()], resolvers: [VantResolver()] }),
Components({ resolvers: [VantResolver()] }), Components({ resolvers: [VantResolver()] }),
//当 unplugin-vue-components 版本大于等于 0.26.0 时,使用以下写法 //当 unplugin-vue-components 版本大于等于 0.26.0 时,使用以下写法
AutoImport.default({ resolvers: [VantResolver()] }), AutoImport.default({
imports: [VantImports()],
resolvers: [VantResolver()],
}),
Components.default({ resolvers: [VantResolver()] }), Components.default({ resolvers: [VantResolver()] }),
], ],
}; };
@ -268,7 +276,7 @@ module.exports = {
```html ```html
<script> <script>
showToast('No need to import showToast') showToast('No need to import showToast');
</script> </script>
``` ```