惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog
The Cloudflare Blog
J
Java Code Geeks
Apple Machine Learning Research
Apple Machine Learning Research
T
Tailwind CSS Blog
L
LangChain Blog
Recent Announcements
Recent Announcements
Hugging Face - Blog
Hugging Face - Blog
Microsoft Security Blog
Microsoft Security Blog
F
Fortinet All Blogs
Microsoft Azure Blog
Microsoft Azure Blog
V
V2EX
I
InfoQ
博客园 - 司徒正美
T
The Blog of Author Tim Ferriss
G
Google Developers Blog
云风的 BLOG
云风的 BLOG
aimingoo的专栏
aimingoo的专栏
小众软件
小众软件
H
Help Net Security
博客园 - 三生石上(FineUI控件)
S
SegmentFault 最新的问题
B
Blog RSS Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

串串狗小刊 ⭐️

Web 出海之域名商、托管商等一定要分开 - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 程序员下班以后做什么副业合适? - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 终极拷问:用户的登录信息放哪里? - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 5个 link 标签,突破前端性能瓶颈! - 串串狗小刊 Web 出海让你结束上班时代! - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 注意!程序员不要使用 设计模式 了! - 串串狗小刊 Web 出海之品牌站如何应对被别人侵权 - 串串狗小刊 - 聊AI、互联网、前端技术 ~ Web 出海之一些广告流量主方案和 SaaS 站没必要搞社区 - 串串狗小刊 年轻人怎么抓住 AI 发展的风口? - 串串狗小刊 为什么 GO 语言地位很尴尬? - 串串狗小刊 Web 出海必备的外链列表 - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 我的 Web 3D 世界梦 - 串串狗小刊 OPC Web 出海之图视频的 AI 供应商渠道和简单外链 - 串串狗小刊 简单聊聊我的 Nodejs 世界观 - 串串狗小刊 Web 出海快速判断关键词法和推荐 3 个 SKILL - 串串狗小刊 Web 出海之演示建站盈利和朋友 Reyn 的教训 阅读源代码前要运行的 5 条 Git 命令 - 串串狗小刊 介绍几组我一直在使用的 Codex 插件 我观看哥飞年终会议复盘的 Web 出海笔记(下) - 串串狗小刊 观看哥飞年终会议复盘的 8 个 Web 出海笔记 - 串串狗小刊 Codex 敞开用的技巧和谷歌趋势的参考词 - 串串狗小刊 - 聊AI、互联网、前端技术 ~ Web 出海之外链提交频率和如何不花 Token 处理代码 - 串串狗小刊 程序员现在的最佳副业 ~ Web 出海 - 串串狗小刊 如何设计良好的 API - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 你跟 AI 对话后会发生什么? - 串串狗小刊 出海 Web 之 GSC 里的曝光量和点击量和外链的关系 - 串串狗小刊 出海 Web 不要 恋战 新词游戏站 - 串串狗小刊 无港卡开通 Stripe 收款和 Nofollow 转 Dofollow 技巧 - 串串狗小刊 DeepSeek 发布氮气加速器 DSpark!可惜好东西又开源了 - 串串狗小刊 简单聊聊出海 Web 的游戏站 - 串串狗小刊
Vite 这个前端打包工具是怎么工作的呢? - 串串狗小刊 - 聊AI...
独元殇 · 2026-05-13 · via 串串狗小刊 ⭐️
«

时间:2026-5-13 00:17     作者:独元殇     分类: 前端技术


欢迎关注我的公众号,名叫「串串狗小刊」

首先,第一步是读取配置。就是 vite.config.js 还有 .env 以及 --mode 等命令 ,除了获取各种策略规则外,最主要的是知道哪个文件是入口文件(一般是一个 HTML 文件)。

现在万事俱备,开始打包。

一般会先删除上一次的打包结果,也就是删除 dist 目录里的内容。然后把一些静态资源给搞进入,比如:

obots.txt favicon.ico crossdomain.xml sitemap.xml manifest.json .htaccess humans.txt LICENSE README.md

这种。

然后就是处理和解析 HTML 了。

首先是压缩加工 HTML ,替换一些环境变量、一些埋点、加入 UTF-8 标志,转换代码成各种兼容模式。

提取页面的各种资源文件,尤其是 JS 的主入口脚本。

接下来就是模块相关的内容了。就跟顺藤摸瓜一样,一个模块一个模块加载、分析、解析.... 然后全串起来。这个过程可能会生产兼容不同浏览器的产物,当然,根据你给的配置决定。

标准的过程是【路径解析】-【模块加载】-【模块转化】-【分析模块依赖】-【循环路径解析】。

  1. 【路径解析】很简单。 如果你用过 '@/' 路径、或者 js ts 省略了、或者略写了模块名等等.... 打包器会自动给你补全修正。
  2. 【模块加载】的意思也简单,就是根据解析的数据,把对应的文件给你找到。加载到内存里。
  3. 【模块转化】 就是把加载进来的文件,给深度处理一下,删除无用的代码、注入环境变量、转化解析 ts 和 JSON ,以及各种兼容性处理,如果你设置压缩了,那也给你压缩一下。
  4. 【分析模块依赖】,上面的意思是单个模块的转化,我们的程序里可能还有很多很多的模块,于是就一个一个找下去,把所有模块给重复处理,并且生产项目依赖的关系图谱。

接着,就是根据上面得到的 依赖的关系图谱,生成最终的 Bundle(打包产物)!

在此中,会提出一些无用的 函数、变量、模块、逐渐等等,以及一些引用的 图片音频视频 等地址也替换成真正可用的(比如这些文件会生产唯一哈希值,追加到文件名末尾),以及为了兼容性的 top-level-await 降级 。

CSS 方面,Less 代码等 CSS 预处理器代码也会被编译成 CSS,还有会移除各种未使用的class、兼容性。

差不多就是这个样子。

标签: 原创 Vite