切换导航
简历
工具
演示
查询
导航菜单
服务端
30
前端
114
数据库
82
进阶开发
8
桌面程序
2
QA
15
软件使用
36
规范协议
5
操作系统
11
AI
0
复用资源
6
硬件
0
标签
HTML
正则表达式
Json
包管理工具
vite
CSS
XPath
JavaScript
Jquery
less
ES6
Vue
React
vue 3
Layui
editor.md
sea.js
Zepto.js
mysql.js
mssql.js
NodeJs
Express
前端template
YAML
杂项
外部链接
.NET Core SDK和运行时安装包
淘宝 NPM 镜像
查询网
Tables Generator线上表格转换工具
引用cdn在线脚本和样式
首页
前端
前端打包工具Webpack、Rollup、esbuild介绍
[TOC] ## esbuild esbuild 是用 Go 语言写的极速 JS/TS 打包与转译工具,由 Figma CTO Evan Wallace 开发,主打 “比 Webpack 快 10–100 倍”,无需缓存也能极速构建。一句话:把 JS/TS/JSX/CSS 打包、转译、压缩成浏览器可运行的代码,速度极快。 **核心定位**:打包器(bundler)+ 转译器(transpiler)+ 压缩器(minifier) |作用|描述| |--|--| |**极速打包(Bundle)**|1️⃣合并多个模块(ESM/CommonJS)为少量文件,减少浏览器请求。<br>2️⃣支持 Tree Shaking:删除未使用代码,减小体积。| |**代码转译(Transform)**|1️⃣TS → JS、JSX → JS、CommonJS → ESM(浏览器原生支持)。<br>2️⃣比 Babel 快 10–100 倍,开发环境秒级响应。| |**代码压缩(Minify)**|移除空格、重命名变量、删除注释,生产环境减小文件体积。| |**处理 CSS**|打包 CSS、支持 CSS Modules、压缩 CSS。| ### 快速上手 esbuild + **安装** ```bash npm install esbuild --save-dev ``` + **命令行打包** ```bash # 打包 src/index.js 为 dist/bundle.js,压缩 npx esbuild src/index.js --bundle --minify --outfile=dist/bundle.js ``` + **JS API 转译 TS → JS** ```js const esbuild=require('esbuild'); esbuild.build({ entryPoints: ['src/index.ts'], bundle: true, outfile: 'dist/bundle.js', minify: true, platform: 'browser', }).catch(() => process.exit(1)); ``` ## Rollup + **定位:**专注库源码打包工具 + **设计初衷:**给类库、框架打包,不是给业务项目。 + **核心能力:** + 极致 Tree-Shaking(删掉无用代码)。 + 专注 ESM 标准,打包干净、体积小。 + 可输出 ESM / CommonJS / UMD 多种格式。 + **特点:** + 打包出来代码干净、无冗余 + 不擅长处理图片、CSS、复杂静态资源 + 插件生态够用,但不像 Webpack 万能 + 适合:写组件库、工具库、框架源码(Vue、React、Vite 源码都是 Rollup 打的) ## Webpack + **定位:**全能型 前端工程打包工具 + 出场最早、生态最强、企业项目用得最多。 + **核心能力:** + 打包 JS、TS、Vue、React、CSS、图片、字体、静态资源所有文件。 + 通过 loader 翻译文件(less、sass、ts、vue)。 + 通过 plugin 做工程能力(html 生成、压缩、环境变量、分割代码)。 + 支持热更新、代码分割、懒加载、多入口打包。 + **特点** + 啥都能做,大而全 + 配置复杂、学习成本高 + 基于 Node.js 单线程,大型项目打包慢 + 适合:日常业务项目、Vue/React 后台管理、复杂企业项目 ## 三个打包工具对比 |对比维度|Webpack|Rollup|esbuild| |--|--|--|--| |开发语言|JavaScript(Node)|JavaScript(Node)|Go| |构建速度|慢(大项目更卡)|中等|极快| |主要用途|业务项目打包|组件库 / 工具库打包|极速转译、快速打包、Vite 底层| |处理静态资源|完美支持 (图片 / 字体 /css)|不擅长|内置支持| |Tree-Shaking|支持|最强|支持| |配置难度|复杂繁琐|简单|极简 / 零配置| |插件生态|最丰富|中等|较弱| |代码分割懒加载|非常成熟|弱|一般| |TS/JSX 支持|需要配 loader|需要插件|原生内置| |热更新体验|一般,大项目慢|不主打热更新|极速秒级| ## 极简流程图 ### Vite 整体工作流程 + 三大工具分工 ```bash Vite项目 │ ├─ 开发环境 npm run dev ──→ 全权交给【esbuild】 │ │ │ ├─ 第三方依赖预构建(CJS→ESM) │ ├─ 实时转译 TS/JSX/Vue 单文件 │ └─ 极速合并、浏览器直接按需加载 │ └─ 生产环境 npm run build ──→ 全权交给【Rollup】 │ ├─ 代码打包、Tree-Shaking ├─ 代码分割、懒加载、CSS拆分 └─ 输出线上最优静态产物 【Webpack】:独立老打包工具 只负责:传统Vue/React项目、老旧工程、不用Vite的项目 ``` ### 三者定位极简框图 ```bash 前端打包三剑客 ├─ Webpack → 传统业务项目全能打包(大而全、配置重、速度慢) ├─ Rollup → 组件库/工具库打包 + Vite生产打包(产物干净、适合库) └─ esbuild → Vite开发环境专用(Go语言、极速转译、依赖预构建) ``` ### 极简对比记忆图 ```bash 开发启动要快 → esbuild 打包上线要稳 → Rollup 老项目全套工程 → Webpack ``` ## 扩展 vite 的打包方式 Vite 采用开发环境 esbuild + 生产环境 Rollup 的双引擎架构。 **开发环境:依赖预构建(核心)** + 1️⃣第三方依赖(如 React、Lodash)多为 CommonJS,浏览器不认识Vite。 + 2️⃣Vite 用 esbuild 将依赖一次性转成 ESM 并合并成单文件,缓存到 node_modules/.vite/deps。 + 3️⃣解决两个问题: + CommonJS → ESM:适配浏览器。 + 合并小模块:减少 HTTP 请求,提升加载速度。 **开发环境:实时转译 TS/JSX** + 1️⃣Vite 用 esbuild 实时转译 .ts/.tsx/.jsx,比 Babel 快 100 倍。 + 2️⃣注意:esbuild 不做 TS 类型检查,需配合 vue-tsc 或 tsc --noEmit。 **生产环境:为什么不用 esbuild 打包** + 1️⃣esbuild 虽快,但代码分割、CSS 处理、生态插件不如 Rollup 成熟。 + 2️⃣Vite 生产环境用 Rollup,兼顾速度、稳定性、功能完整性。
扫一扫手机看
点击排行
windows 文件资源管理器使用
Layui 弹窗open使用说明
SQL Server 中字符串函数使用
C# 使用QQ邮箱代理做邮件接收功能
SQL Server关于apply的两种形式cross apply 和 outer apply
ASP.NET MVC 模型的自定义验证
nvm安装及常用命令
SQL Server 中数据类型转换
SQL Server 中WITH AS短语的使用
IE浏览器下AJAX缓存问题导致数据不更新的解决办法
订阅号