unbuild

34 阅读1分钟

unbuild的github地址: github.com/unjs/unbuil…

开发 create-vite 的时候用到了

"scripts": {
  "dev": "unbuild --stub",
  "build": "unbuild",
},
"devDependencies": {
  "unbuild": "^3.5.0"
}

底层实现主要依赖于以下几个工具:

  1. esbuild:
  • 用于 TypeScript 编译
  • 提供快速的构建性能
  • 处理代码转换和优化
  1. Rollup:
  • 用于打包和模块处理
  • 处理依赖关系
  • 生成最终的构建输出
  1. TypeScript 编译器 API:
  • 用于生成类型声明文件(.d.ts)
  • 提供类型检查功能

当执行 unbuild --stub 时,主要执行以下步骤:

  1. 类型声明生成:
   // 使用 TypeScript 编译器 API
   - 读取 TypeScript 源码
   - 生成类型声明文件
   - 不进行实际的代码编译
  1. 源码映射:
// 生成源码映射
   - 保持源码结构
   - 创建源码映射文件
   - 方便调试
  1. 配置处理
// 处理构建配置
   - 读取 build.config.ts
   - 应用构建选项
   - 设置输出目录
  1. 依赖处理
   // 处理项目依赖
   - 分析依赖关系
   - 处理外部依赖
   - 优化依赖导入
  1. 输出生成
   // 生成输出文件
   - 创建 dist 目录
   - 生成类型声明文件
   - 保持源码结构

主要特点:

  1. 快速开发:
  • 只生成类型声明
  • 不进行代码编译
  • 加快开发迭代
  1. 类型安全:
  • 完整的类型检查
  • 类型声明文件生成
  • 开发时类型提示
  1. 源码映射:
  • 保持源码可读性
  • 方便调试
  • 支持源码映射
  1. 构建优化:
  • 使用 esbuild 加速
  • 智能依赖处理
  • 优化的构建流程

这就是为什么 unbuild --stub 在开发环境中特别有用,它提供了:

  1. 快速的开发体验
  2. 完整的类型支持
  3. 方便的调试能力
  4. 高效的构建过程