全部学科
Python全栈
python
NodeJS全栈
nodejs
📅 2026-05-23 6 分钟 ✍️ juanwangdev

库模式构建

Vite 支持构建库文件,输出适合 npm 发布的格式。

库模式配置

JavaScript
export default defineConfig({
  build: {
    lib: {
      entry: 'src/index.ts',
      name: 'MyLib',
      formats: ['es', 'cjs'],
      fileName: (format) => `my-lib.${format}.js`
    }
  }
})

配置选项说明

选项说明
entry入口文件路径
name库的全局变量名(UMD 格式)
formats输出格式
fileName输出文件名

输出格式

格式说明输出文件
esES Module.mjs 或 .js
cjsCommonJS.js
umdUMD.umd.js
iife立即执行函数.iife.js

完整库构建配置

JavaScript
export default defineConfig({
  build: {
    lib: {
      entry: 'src/index.ts',
      name: 'MyLib',
      formats: ['es', 'cjs', 'umd'],
      fileName: (format) => `my-lib.${format}.js`
    },
    rollupOptions: {
      // 外部化依赖
      external: ['vue', 'lodash'],
      output: {
        // 为外部化依赖提供全局变量
        globals: {
          vue: 'Vue',
          lodash: '_'
        }
      }
    }
  }
})

注意:库依赖应外部化,避免打包到产物中。

TypeScript 类型生成

Bash
# 安装 vue-tsc
npm add -D vue-tsc
Bash
# 构建时生成类型
vue-tsc --declaration --emitDeclarationOnly --outDir dist
vite build

package.json 配置

JSON
{
  "name": "my-lib",
  "version": "1.0.0",
  "main": "dist/my-lib.cjs.js",
  "module": "dist/my-lib.es.js",
  "types": "dist/index.d.ts",
  "exports": {
    ".": {
      "import": "./dist/my-lib.es.js",
      "require": "./dist/my-lib.cjs.js",
      "types": "./dist/index.d.ts"
    }
  },
  "files": ["dist"]
}

构建输出结构

text
dist/
├── my-lib.es.js      # ES Module
├── my-lib.cjs.js     # CommonJS
├── my-lib.umd.js     # UMD
└── index.d.ts        # 类型声明

要点总结

  • build.lib 配置库模式构建
  • formats 指定输出格式
  • external 外部化依赖
  • 需额外生成 TypeScript 类型
想在手机上练习这篇文章的配套题目?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一篇 Source Map 生成策略
下一篇 → CSS 代码分割
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码