乱人伦 国语对白海角社区,五月激情丁香婷婷综合中文字幕,欧美伊人婷婷久久五月综合,亚洲精品无amm毛片,亚洲男人第一无码AV网站,国产日韩欧美丝袜一区二区,亚洲一区精品在线观看

Vue3组件库打包指南,一次生成esm、esm-雷竞技官雷竞技官网官方网站

Vue3组件库打包指南,一次生成esm、esm

2026-01-16 16:37:05投稿人:BOB登錄網(wǎng)址官網(wǎng)(荷澤)有限公司圍觀4763 評論

Vue3組件庫打包指南 ,一次生成esm、esm-bundle 、commonjs、umd

本文為Varlet組件庫源碼主題閱讀系列第二篇 ,讀完本篇 ,你可以了解到如何將一個Vue3組件庫打包成各種格式

上一篇里提到了啟動服務前會先進行一下組件庫的打包,運行的命令為:

varlet-cli compile

顯然是varlet-cli提供的一個命令:

處理函數(shù)為compile,接下來我們詳細看一下這個函數(shù)都做了什么 。

// varlet-cli/src/commands/compile.tsexport async function compile(cmd: {  noUmd: boolean }) {     process.env.NODE_ENV = 'compile'    await removeDir()    // ...}// varlet-cli/src/commands/compile.tsexport function removeDir() {     // ES_DIR
:varlet-ui/es    // LIB_DIR
:varlet-ui/lib    // HL_DIR:varlet-ui/highlight    // UMD_DIR
:varlet-ui/umd    return Promise.all([remove(ES_DIR), remove(LIB_DIR), remove(HL_DIR), remove(UMD_DIR)])}

首先設置了一下當前的環(huán)境變量,然后清空相關的輸出目錄。

// varlet-cli/src/commands/compile.tsexport async function compile(cmd: {  noUmd: boolean }) {     // ...    process.env.TARGET_MODULE = 'module'    await runTask('module', compileModule)    process.env.TARGET_MODULE = 'esm-bundle'    await runTask('esm bundle', () =>compileModule('esm-bundle'))    process.env.TARGET_MODULE = 'commonjs'    await runTask('commonjs', () =>compileModule('commonjs'))    process.env.TARGET_MODULE = 'umd'    !cmd.noUmd && (await runTask('umd', () =>compileModule('umd')))}

接下來依次打包了四種類型的產(chǎn)物,方法都是同一個compileModule ,這個方法后面會詳細分析 。

組件的基本組成

以Button組件為例看一下未打包前的組件結構 :

一個典型組件的構成主要是四個文件 :

.less:樣式

.vue:組件

index.ts