unplugin-vue-components 样式重复引用的问题

unplugin-vue-components 重复引用的问题


部分场景下出现 Two output files share the same path but have different contents: ***_css.js
该问题的直接原因为引入时大小写的问题,如 ant-design-vue 的 Modal :

  • 文件 vite.config.js
import { defineConfig } from 'vite';
import Components from 'unplugin-vue-components/vite';
import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers';
export default defineConfig({
   plugins: [
    vue(),
    Components({
      directoryAsNamespace: true,
      resolvers: [AntDesignVueResolver({ resolveIcons: true })]
    })
  ]
});
  • 文件: demo.vue
<template>
  <div>
    <a-button @click="visible = true">显示Modal窗口</a-button>
    <a-modal v-model:visible="visible" title="测试窗口" @cancel="cancel">
      <p>这是一个用于测试的窗口</p>
    </a-modal>
  </div>
</template>
<script>
import { Modal } from "ant-design-vue";
export default {
  data() {
    return {
      visible: false,
    };
  },
  methods: {
    cancel() {
      Modal.error({
        title: "取消",
        content: "你取消了显示!",
      });
    },
  },
};
</script>

当前运行以上代码时,你可能会收到以下错误:

[vite] error while updating dependencies:
Error: Build failed with 1 error:
error: Two output files share the same path but have different contents: node_modules\.vite\deps_temp\ant-design-vue_es_Modal_style_css.js

其实是因为unplugin-vue-components插件默认导入时使用了与组件名称大小写一致,于上面则存在两个Modal, 要解决以上问题,只需要改改配置就行:

  • 文件 vite.config.js
import { defineConfig } from 'vite';
import Components from 'unplugin-vue-components/vite';
import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers';
export default defineConfig({
   plugins: [
    vue(),
    Components({
      directoryAsNamespace: true,
      resolvers: [AntDesignVueResolver({ resolveIcons: true, exclude: ['AModal'] })]
    })
  ]
});
  • 文件: demo.vue
<template>
  <div>
    <a-button @click="visible = true">显示Modal窗口</a-button>
    <a-modal v-model:visible="visible" title="测试窗口" @cancel="cancel">
      <p>这是一个用于测试的窗口</p>
    </a-modal>
  </div>
</template>
<script>
import 'ant-design-vue/es/modal/style/css';
import { Modal } from "ant-design-vue";
export default {
  components: {
    [Modal.name]: Modal
  },
  data() {
    return {
      visible: false,
    };
  },
  methods: {
    cancel() {
      Modal.error({
        title: "取消",
        content: "你取消了显示!",
      });
    },
  },
};
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js项目中,`npm i -D unplugin-vue-components unplugin-auto-import` 是用来安装两个插件命令的命令行操作。`unplugin-vue-components` 和 `unplugin-auto-import` 是Unplugin家族的一部分,Unplugin是一个旨在简化Vue.js配置的工具。 - `npm i -D` 是一个全局安装命令,`-D` 表示以开发依赖(devDependencies)的形式安装。这样做的好处是可以确保这些依赖只在开发环境中使用,不会打包到生产环境。 - `unplugin-vue-components` 是用于自动化管理Vue组件导入的插件,它可以帮助你从大型组件库中按需引入组件,减少不必要的打包体积。 - `unplugin-auto-import` 则是自动导入所需的外部依赖,比如CSS文件和TypeScript声明文件。 以下是安装过程的演示: ```sh # 在终端中,进入你的Vue.js项目目录 cd my-vue-project # 使用npm或yarn安装 npm install -D unplugin-vue-components unplugin-auto-import # 或者 yarn add -D unplugin-vue-components unplugin-auto-import # 如果是Unplugin CLI,还需要先全局安装 npm install -g @vue/cli-plugin-unplugin # 或者 yarn global add @vue/cli-plugin-unplugin # 接下来,在项目的根目录下创建一个配置文件,如.config/unplugin.js (如果不存在) # 内容可能类似于: // unplugin相关配置 module.exports = { plugins: [ { plugin: '@unplugin/vuex', options: {} }, { plugin: '@unplugin/router', options: {} }, { plugin: 'unplugin-vue-components', options: { componentsDir: 'src/components' } }, { plugin: 'unplugin-auto-import', options: { css: true, dts: true } } ] } # 然后运行 vue.config.js 或者 @vue/cli-service.config.js 的更新命令,让配置生效 vue.config.update() # 或者 npm run build --update ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值