Vue 组件库开发环境配置指南

Sep 23 · 10min

本指南将帮助你配置一个高效的 Vue 组件库本地开发环境,支持热重载和实时预览。

概述

我们为组件库创建了一个独立的开发环境,与构建配置分离,让你能够:

  • 🔥 实时热重载,修改组件立即生效
  • 📱 实时预览所有组件的效果
  • 🛠 独立的开发配置,不影响构建流程
  • 🎯 专门的调试界面,方便测试组件功能

文件结构

packages/my-components-vite/
├── vite.config.ts          # 生产构建配置
├── vite.dev.config.ts      # 开发环境配置
├── index.html              # 开发环境入口页面
├── dev-main.ts             # 开发环境主入口文件
├── dev-app.vue             # 开发环境应用组件
├── src/                    # 组件源码
└── package.json            # 项目配置

配置文件详解

1. 开发环境配置 (vite.dev.config.ts)

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { resolve } from 'path'

export default defineConfig({
  plugins: [vue()],

  // 开发服务器配置
  server: {
    host: '0.0.0.0',        // 允许外部访问
    port: 3000,             // 端口号
    open: true,             # 自动打开浏览器
    hmr: true,              # 热重载
  },

  // 路径解析
  resolve: {
    alias: {
      '@': resolve(__dirname, 'src'),
    },
  },

  // CSS 预处理器
  css: {
    preprocessorOptions: {
      scss: {},
    },
  },

  // 优化依赖预构建
  optimizeDeps: {
    include: ['vue', 'element-plus', '@element-plus/icons-vue'],
  },
})

2. 生产构建配置 (vite.config.ts)

保持原有的构建配置不变,专门用于打包组件库:

export default defineConfig({
  plugins: [
    vue(),
    dts({
      // TypeScript 声明文件生成配置
    }),
  ],
  build: {
    lib: {
      // 库构建配置
    },
    rollupOptions: {
      // Rollup 配置
    },
  },
})

3. 开发环境入口 (dev-main.ts)

import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import * as ElementPlusIconsVue from '@element-plus/icons-vue'

import DevApp from './dev-app.vue'

const app = createApp(DevApp)

// 安装 Element Plus
app.use(ElementPlus)

// 注册所有图标
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
  app.component(key, component)
}

app.mount('#app')

4. 开发应用组件 (dev-app.vue)

开发应用组件包含了所有组件的演示和测试界面:

  • MyButton 组件演示:展示不同类型、状态的按钮
  • PaginationSelect 组件演示:展示分页选择器的各种配置
  • 实时调试信息:显示组件状态和交互数据

使用方法

1. 启动开发服务器

# 进入组件库目录
cd packages/my-components-vite

# 启动开发服务器
pnpm run dev

# 或者启动并自动打开浏览器
pnpm run dev:open

2. 可用的脚本命令

{
  "scripts": {
    "dev": "vite --config vite.dev.config.ts",
    "dev:open": "vite --config vite.dev.config.ts --open",
    "build": "vite build",
    "preview": "vite preview"
  }
}

3. 访问开发环境

启动后会自动在浏览器中打开:

  • 本地访问:http://localhost:3000
  • 网络访问:http://[你的IP]:3000

开发工作流

1. 修改组件

当你修改 src/ 目录下的任何组件文件时:

  1. Vite 会自动检测文件变化
  2. 热重载会立即更新浏览器中的内容
  3. 无需手动刷新页面

2. 添加新组件

  1. src/components/ 中创建新组件
  2. src/components/index.ts 中导出新组件
  3. dev-app.vue 中添加新组件的演示代码
  4. index.ts 中注册新组件

3. 测试组件功能

开发界面提供了:

  • 基础功能测试:测试组件的基本属性和方法
  • 交互测试:测试事件处理和状态变化
  • 样式测试:测试不同状态下的样式表现
  • 调试信息:实时查看组件内部状态

调试技巧

1. 使用浏览器开发工具

  • Vue DevTools:安装 Vue 开发者工具来检查组件状态
  • 控制台:查看 console.log 输出的调试信息
  • 网络面板:监控组件的网络请求(如 PaginationSelect)

2. 组件状态监控

开发界面的"调试信息"区域实时显示:

const debugInfo = computed(() => {
  return {
    manualLoading: manualLoading.value,
    clickCount: clickCount.value,
    selectedValue: selectedValue.value,
    selectedValue2: selectedValue2.value,
    timestamp: new Date().toLocaleTimeString(),
  }
})

3. 热重载最佳实践

  • 保存频率:频繁保存以获得即时反馈
  • 状态保持:热重载会尽量保持组件状态
  • 样式调试:CSS 修改会立即生效,无需重新加载

常见问题

1. 端口被占用

如果 3000 端口被占用,Vite 会自动尝试其他端口:

Port 3000 is in use, trying another one...
➜  Local:   http://localhost:3001/

2. 热重载不工作

检查以下几点:

  • 确保使用了正确的开发配置文件
  • 检查文件路径是否正确
  • 重启开发服务器

3. 组件样式问题

  • 确保导入了 Element Plus 的样式文件
  • 检查 SCSS 配置是否正确
  • 验证组件的 scoped 样式

高级配置

1. 自定义端口和主机

修改 vite.dev.config.ts

server: {
  host: '0.0.0.0',
  port: 8080,        // 自定义端口
  open: '/custom',   // 自定义打开路径
}

2. 代理配置

如果需要代理 API 请求:

server: {
  proxy: {
    '/api': {
      target: 'http://localhost:8080',
      changeOrigin: true,
      rewrite: (path) => path.replace(/^\/api/, '')
    }
  }
}

3. 环境变量

创建 .env.development 文件:

VITE_API_URL=http://localhost:8080/api
VITE_DEBUG=true

在代码中使用:

const apiUrl = import.meta.env.VITE_API_URL

总结

通过这个开发环境配置,你可以:

  1. 高效开发:实时预览组件效果,无需手动刷新
  2. 独立调试:专门的调试界面,方便测试各种场景
  3. 配置分离:开发和构建配置分离,互不干扰
  4. 扩展性好:易于添加新组件和测试用例

现在你可以愉快地开发 Vue 组件了!当你修改任何组件文件时,浏览器会自动更新,让你立即看到变化效果。

CC BY-NC-SA 4.0 2024-PRESENT © hujiacheng