虾仁A 2023-06-03 21:29 采纳率: 78.8%
浏览 16
已结题

vant4按需引入组件失败 降到vant3用babel.config.js也失败不知道为什么?

vant4按需引入组件失败
降到vant3用babel.config.js也失败不知道为什么?
按照官方文档来改了
vant4中vue.config.js这样配置

const { VantResolver } = require('unplugin-vue-components/resolvers');
const ComponentsPlugin = require('unplugin-vue-components/webpack');

module.exports = {
    configureWebpack: {
        plugins: [
            ComponentsPlugin({
                resolvers: [VantResolver()],
            }),
        ],
    },
};

官方文档也是这样的

img

  • 写回答

1条回答 默认 最新

  • 辞轩. 2023-06-04 17:26
    关注

    在Vant 4版本中,按需引入组件的方法已经发生了变化。为了使组件按需引入正常工作,你需要首先安装一些相关的插件和依赖项:

    npm install @vant/cli @vant/theme -D
    npm install vant -S
    

    接下来,你可以通过创建一个.vant文件来指定你需要按需引入的组件。在.vant中,你可以使用星号(*)来导入所有组件,也可以仅导入你需要的组件。例如,以下.vant文件将导入所有组件和Button组件:

    button
    *
    

    接下来,在vue.config.js中,你可以使用以下配置来支持按需引入:

    const { getThemeResolver } = require('@vant/cli');
    const { ViteAliases } = require('vite-aliases');
    const ComponentsPlugin = require('unplugin-vue-components/vite');
    const { VueI18nPlugin } = require('vite-plugin-vue-i18n');
    
    module.exports = {
      plugins: [
        VueI18nPlugin({
          // options
        }),
        ComponentsPlugin({
          dirs: ['src'],
          extensions: ['vue'],
          deep: true,
          importPath: (path) => path.replace(/^@\//, 'vant/'),
          resolvers: [
            getThemeResolver({
              resolve: (name) => {
                if (name === 'filePath') {
                  return '/path/to/@vant/theme';
                }
              },
            }),
          ],
        }),
      ],
    
      resolve: {
        alias: {
          ...ViteAliases(),
          vant: '@vant/vue3',
          'vant-icons': '@vant/icons',
        },
      },
    };
    

    以上配置中,我们使用了getThemeResolver方法来支持Vant的主题定制,使用ViteAliases方法来支持别名,使用ComponentsPlugin插件来支持按需引入组件。

    如果你想按需引入Vant 3版本中的组件,你可以使用babel-plugin-import插件。请注意,在Vant 3中,你需要在babel.config.js中配置transform-runtimetransform-async-to-generator插件,示例配置如下:

    module.exports = {
      presets: [
        '@vue/cli-plugin-babel/preset',
      ],
      plugins: [
        [
          'import',
          {
            libraryName: 'vant',
            libraryDirectory: 'es',
            style: true,
          },
          'vant',
        ],
        [
          '@babel/plugin-transform-runtime',
          {
            corejs: 3,
          },
        ],
        '@babel/plugin-transform-async-to-generator',
      ],
    };
    

    请确保你已经按照babel-plugin-import插件的要求,安装了相关的依赖:

    npm install babel-plugin-import -D
    

    如果你已经按照上述方法配置,并且仍然无法成功按需引入组件,请检查你的相关依赖包是否正确安装,并检查你的导入方式是否正确。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月12日
  • 已采纳回答 6月4日
  • 创建了问题 6月3日

悬赏问题

  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)