unbuild

介绍

unbuild 通常用于做:工具库、npm 包、Vue 插件,是一个专门为 npm 库设计的构建工具。

特点是:

  1. 自动输出 ESM + CJS
  2. 自动生成类型
  3. 零配置
  4. 适合库开发
  5. unbuild 底层用的是 Rollup,所有 node_modules 默认 external。

配置

js 复制代码
import { defineBuildConfig } from 'unbuild';

export default defineBuildConfig({
  // 每次构建前,先删除 dist 目录
  clean: true,
  // 生成 TypeScript 类型声明文件 (.d.ts)
  declaration: true,
  // 以 src/index.ts 作为入口文件
  entries: ['src/index'],
  rollup: { emitCJS: true }
});

打包产物分析

打包产物

js 复制代码
index.cjs
index.mjs
index.d.ts
index.d.mts
index.d.cts
  1. index.mjs
  • ES Module 版本,老 Node 项目或老工具用。
  • 用于import { xxx } from 'your-lib'
  1. index.cjs
  • CommonJS 版本
  • 用于const lib = require('your-lib')
  1. index.d.ts
  • 通用 TypeScript 类型声明,
  • 默认类型入口
  1. index.d.mts
  • ESM 模块的类型声明
  • 用于type: "module" 或者 Node ESM 解析场景。
  • 和 d.ts 的区别:明确声明是 ESM 类型
  1. index.d.cts
  • CommonJS 类型声明
  • 在严格 CJS + TS 模式下用。

三种类型文件

js 复制代码
index.d.ts   ← 最重要
index.mjs    ← 主入口
index.cjs    ← 兼容

d.mts / d.cts 是增强兼容用。

unbuild package.json

json 复制代码

"type": "module"

type: module 限制的是包内部的 .js 文件

如果你有:

js 复制代码
dist/index.js

在:

js 复制代码
"type": "module"

下,它会被当作 ESM。

架构

js 复制代码
vue → peerDependencies
@iconify/vue → peerDependencies

图标组件是 UI 层能力,不是运行时核心依赖,让宿主决定 iconify 版本是更安全的。

相关推荐
Hyyy9 小时前
普通前端续命周报——第1周
前端·javascript
KaMeidebaby9 小时前
卡梅德生物技术快报|抗独特型抗体开发:半抗原检测技术瓶颈拆解,抗独特型抗体开发工程化实践
前端·数据库·人工智能·其他·百度·新浪微博
2501_940041749 小时前
纯前端创意交互:五款全新实用工具与视觉应用生成指南
前端·交互
刀法如飞10 小时前
《道德经》简单解说版-第 2 章:天下皆知美之为美
前端·后端·面试
发现一只大呆瓜12 小时前
超全 Vite 性能优化指南:网络、资源、预渲染三维落地方案
前端·面试·vite
IT_陈寒12 小时前
Vue的computed属性怎么突然不更新了?
前端·人工智能·后端
智商不够_熬夜来凑12 小时前
【Picker】单选多选
前端·javascript·vue.js
米饭不加菜13 小时前
Typora 原生流程图语法完全指南(Flowchart.js)
前端·javascript·流程图
scan72413 小时前
langgraphy条件边
前端·javascript·html
冰小忆13 小时前
类变量在继承场景下的初始化规则是怎样的?
java·前端·数据库