113 - 《手撕源码 08:unbuild》
发布于 2022年5月11日
unbuild 依赖了 mkdist、jiti、untyped、defu、hookable 等库。这些库都在 unjs 的 org 下,这是一套包含如何实现工具/库的底层库。
★ 三种构建模式。
unbuild 支持三种构建模式,1)mkdist 文件到文件,2)rollup 打包模式,3)untyped。untyped 是 unbuild 独创的功能,基于 Object 对象然后生成类型、schema 和 markdown 文件。
★ 如何区分是 mkdist 还是 rollup?
entry 如果以 / 结尾,会用 mkdist 做文件到文件的编译,否则用 rollup 做打包编译。
★ mkdist 如何做文件到文件的编译?
用 globby 找出所有文件,通过一个简单的 loader 机制(内置了 vue 和 js loader),让每个文件跑一遍 loader 做转换,然后输出到 ouput 目录。js loader 中,ts 到 js 的编译时用 esbuild,mjs 到 cjs 的编译时用