【vite好用的配置】自动导入组件、vue中的hook、路径解析、打包配置、本地运行反向代理配置

#王者杯·14天创作挑战营·第1期#

前言

之前出了一篇自己搭建 后台管理系统的文章,今天顺便把vite配置,涉及到的一些给大家分享吧。
按需食用哈。

一、 自动导入vue中的hook、ref等

1. 安装插件

npm install unplugin-auto-import --save-dev

yarn add unplugin-auto-import -D

在这里插入图片描述

2. 配置 Vite(vite.config.ts 或 vite.config.js)

这边用的vue,所以就是在 vite.config.ts 中配置咯

1)基础配置
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import AutoImport from 'unplugin-auto-import/vite';

export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      // 自动导入 Vue 相关函数,如:ref, reactive, toRef 等
      imports: ['vue'],
      // 生成自动导入的类型声明文件
      dts: 'src/auto-imports.d.ts',
    }),
  ],
});
2)自定义导入(示例:Pinia、Vue Router)
AutoImport({
  imports: [
    'vue',
    'vue-router',
    {
      pinia: ['defineStore', 'storeToRefs'],
    },
  ],
  dts: 'src/auto-imports.d.ts',
});
3)与组件库集成(示例:NutUI、Element Plus)
AutoImport({
  imports: [
    'vue',
    {
      '@nutui/nutui': ['Button', 'Toast'], // NutUI
      'element-plus': ['ElMessage', 'ElNotification'], // Element Plus
    },
  ],
  dts: 'src/auto-imports.d.ts',
});
4)自定义规则
AutoImport({
  resolvers: [
    // 自定义解析器,例如自动导入 NutUI 组件
    (name) => {
      if (name.startsWith('Nut')) {
        return {
          name: name.slice(3), // 移除前缀 Nut
          from: '@nutui/nutui',
        };
      }
    },
  ],
});
5)配置关键字说明
  • imports 指定要自动导入的模块或库,支持内置模块(如 vue)和自定义模块。
  • dts 生成的类型声明文件路径(用于 TypeScript 或 IDE 智能提示)。
  • dirs 自动导入指定目录下的模块(如 src/composables)。
  • eslintrc 生成 ESLint 配置文件(解决 ESLint 报错)。
  • vueTemplate 是否支持在 Vue 模板中自动导入(默认 false)。
6)在项目中使用

无需手动import,直接使用即可。

<template>
  <div>{{ count }}</div>
  <button @click="increment">+1</button>
</template>

<script setup>
// 无需手动导入 ref 和 computed
const count = ref(0);
const double = computed(() => count.value * 2);

function increment() {
  count.value++;
}
</script>

【注意】
TypeScript 支持:确保 tsconfig.json 包含生成的类型声明文件:

  • “include”: [“src/auto-imports.d.ts”]

二、 自动导入vue中的hook、ref等

1. 安装插件

npm install unplugin-vue-components --save-dev
# 或
yarn add unplugin-vue-components -D

在这里插入图片描述

2. 配置 Vite(vite.config.ts 或 vite.config.js)

同样滴,这边用的vue,所以就是在 vite.config.ts 中配置咯

1)基础配置
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import Components from 'unplugin-vue-components/vite';

export default defineConfig({
  plugins: [
    vue(),
    Components({
      // 组件默认存放位置
      dirs: ['src/components'],
      // 生成自动导入的类型声明文件
      dts: 'src/components.d.ts',
    }),
  ],
});
2)与 UI 组件库集成(示例:NutUI、Element Plus)
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import Components from 'unplugin-vue-components/vite';
import { NutuiResolver, ElementPlusResolver } from 'unplugin-vue-components/resolvers';

export default defineConfig({
  plugins: [
    vue(),
    Components({
      // 配置解析器
      resolvers: [
        NutuiResolver(), // 自动导入 NutUI 组件
        ElementPlusResolver(), // 自动导入 Element Plus 组件
      ],
      dts: 'src/components.d.ts',
    }),
  ],
});
3)配置关键字说明
  • dirs 自动扫描的组件目录(默认 ['src/components'])。
  • extensions 组件文件扩展名(默认 ['vue'])。
  • include 匹配文件的 glob 模式(默认 [**/*.vue])。
  • exclude 排除文件的 glob 模式。
  • resolvers 配置组件库解析器(如 NutUI、Element Plus 等)。
  • dts 生成的类型声明文件路径(用于 TypeScript 或 IDE 智能提示)。
  • types 自定义组件类型(如 { from: 'vue-router', names: ['RouterLink'] })。
4)在项目中的使用
<template>
  <!-- 无需手动导入 Button 组件 -->
  <NutButton type="primary">按钮</NutButton>
  <ElButton type="success">Element Button</ElButton>
  
  <!-- 本地组件也会自动导入 -->
  <MyComponent />
</template>
5)自动导入组件、api混合使用

仅供参考哈,自己装自己需要的依赖和写自己需要的配置哦。

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import AutoImport from 'unplugin-auto-import/vite';
import Components from 'unplugin-vue-components/vite';
import { NutuiResolver } from 'unplugin-vue-components/resolvers';

export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      imports: ['vue', 'vue-router'],
      dts: 'src/auto-imports.d.ts',
    }),
    Components({
      resolvers: [NutuiResolver()],
      dts: 'src/components.d.ts',
    }),
  ],
});

【注意】
TypeScript 支持:确保 tsconfig.json 包含生成的类型声明文件:

  • “include”: [“src/components.d.ts”]

三、 配置@别名

1. 安装依赖

npm install @types/node --save-dev # 提供 path 模块类型支持

yarn add @types/node --dev

在这里插入图片描述

2. 配置 Vite(vite.config.ts 或 vite.config.js)

再次同样滴,这边用的vue,所以就是在 vite.config.ts 中配置咯

1)基础配置
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import path from 'path'; // 引入 path 模块

export default defineConfig({
  resolve: {
    alias: {
      '@': path.resolve(__dirname, './src'), // 将 @ 指向 src 目录
    },
  },
  plugins: [vue()],
});
2)配置 TypeScript 支持(如果使用 TypeScript)

修改 tsconfig.json

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@/*": ["src/*"] // 让 TypeScript 识别 @ 别名
    }
  }
}

3. 配置 Vue CLI 项目配置

1)修改 vue.config.ts
const path = require('path');

module.exports = {
  chainWebpack: (config) => {
    config.resolve.alias.set('@', path.resolve(__dirname, 'src'));
  },
};
2)配置 TypeScript 支持(如果使用 TypeScript)

修改 tsconfig.json

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@/*": ["src/*"]
    }
  }
}

四、 打包配置

这是我的配置哈,更多请站内查询一下~

build: {
      target: 'es2015',
      outDir: './dist', //指定输出路径
      assetsDir: 'assets', // 指定生成静态资源的存放路径
      minify: 'terser', // 混淆器,terser构建后文件体积更小
      terserOptions: {
        compress: {
          drop_console: true, // 生产环境去除console
          drop_debugger: true, // 生产环境去除debugger
        },
      },
    },

五、 代理配置

这是我的配置哈,更多请站内查询一下~

server: {
      hmr: true, // 开启热更新
      open: false, // 在服务器启动时自动在浏览器中打开应用程序
      // 本地开发环境通过代理实现跨域,生产环境使用 nginx 转发
      proxy: {
        '/api': {
          // target 是你的后端 API 服务器的地址  
          target: '',
          // changeOrigin 设置为 true,表示在发送请求时会自动改变原始主机头为目标 URL  
          changeOrigin: true,
          ws: true,  // 允许websocket代理 
        },

      },
    },
  }

后续会放个代码包,开箱即食的那种。还会做一些可服用的组件,关注不迷路。

Vite 4 是一个快速的构建工具,可以用于开发 Vue 3 组件库。以下是一个基本的打包配置示例: ```js // vite.config.js import vue from '@vitejs/plugin-vue' export default { plugins: [vue()], build: { lib: { entry: 'src/main.js', // 组件库的入口文件 name: 'MyComponent', // 组件库的名称 fileName: format => `my-component.${format}.js` // 打包后文件的名称 }, rollupOptions: { // external 外部依赖的声明 external: ['vue'], output: { // globals 全局变量的声明 globals: { vue: 'Vue' } } } } } ``` 上面的配置将会把 Vue 组件打包成一个 UMD 格式的 JavaScript 文件,可以通过 script 标签引入,也可以通过 import 引入。其中,`lib.entry` 指定了组件库的入口文件,`lib.name` 指定了组件库的名称,`lib.fileName` 指定了打包后文件的名称。 在 `build.rollupOptions` 中,`external` 指定了组件库的外部依赖,这里只有一个 Vue;`globals` 指定了组件库的全局变量声明,这里将 Vue 指定为全局变量。 需要注意的是,如果组件库中使用了一些 Vue 的插件或者第三方库,需要在 `build.rollupOptions.external` 中声明这些依赖。如果不声明会导致打包后的文件中包含这些依赖的代码,从而增加文件体积。 除了上面的基本配置,还可以根据具体项目的需求进行更高级的配置,例如压缩文件体积、生成 source map 等。具体的配置项可以参考 Vite 的文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟una

客官打赏小银子,我库库出文

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值