Appearance
细嚼慢咽从0看vite(3.1.3)源码
主要核心代码
如何阅读
先看管理工具使用的命令是pnpm,跟目录是:pnpm-workspace.yaml
yaml
packages:
- 'packages/*'
- 'playground/**'
使用的是monorepo,当前的packages下的每个文件夹都是一个独立的小项目
packages是项目相关主要内容
playground 测试packages构建且调试的文件夹
按道理先阅读每个文件的
阅读顺序 README.md
文件 ,但里面只是简单地功能介绍
(目前是个人理解,后面继续阅读可能会重新调整) 先看更目录下的
- CONTRIBUTING.md
这里描述了当前贡献指南,如何调试当前项目
根目录下的package.json
阅读packages/vite/package.json
然后就是packages/vite/src (简单看一下目录结构)
正式调试vite源码(重要) playground/* 下面所有的文件
一个一个调试每个文件vite源码都干了什么
目录
shell
|-- vite
|-- packages
| |-- vite
| |-- CHANGELOG.md #更新日志
| |-- LICENSE.md #许可证
| |-- README.md # 这个不用多说,每个文件夹打开有这都是首读文件(类似封面说明书)
| |-- api-extractor.json # https://zhuanlan.zhihu.com/p/434565485
| |-- client.d.ts
| |-- index.cjs
| |-- package.json
| |-- rollup.config.ts
| |-- tsconfig.base.json
| |-- tsconfig.check.json
| |-- tsconfig.json
| |-- bin
| | |-- openChrome.applescript
| | |-- vite.js
| |-- scripts
| | |-- patchTypes.ts
| | |-- tsconfig.json
| |-- src
| | |-- client
| | | |-- client.ts
| | | |-- env.ts
| | | |-- overlay.ts
| | | |-- tsconfig.json
| | |-- node
| | |-- build.ts
| | |-- cli.ts
| | |-- config.ts
| | |-- constants.ts
| | |-- env.ts
| | |-- http.ts
| | |-- index.ts
| | |-- logger.ts
| | |-- packages.ts
| | |-- plugin.ts
| | |-- preview.ts
| | |-- publicUtils.ts
| | |-- tsconfig.json
| | |-- utils.ts
| | |-- watch.ts
| | |-- optimizer
| | | |-- esbuildDepPlugin.ts
| | | |-- index.ts
| | | |-- optimizer.ts
| | | |-- scan.ts
| | |-- plugins
| | | |-- asset.ts
| | | |-- assetImportMetaUrl.ts
| | | |-- clientInjections.ts
| | | |-- completeSystemWrap.ts
| | | |-- css.ts
| | | |-- dataUri.ts
| | | |-- define.ts
| | | |-- dynamicImportVars.ts
| | | |-- ensureWatch.ts
| | | |-- esbuild.ts
| | | |-- html.ts
| | | |-- importAnalysis.ts
| | | |-- importAnalysisBuild.ts
| | | |-- importMetaGlob.ts
| | | |-- index.ts
| | | |-- json.ts
| | | |-- loadFallback.ts
| | | |-- manifest.ts
| | | |-- metadata.ts
| | | |-- modulePreloadPolyfill.ts
| | | |-- optimizedDeps.ts
| | | |-- preAlias.ts
| | | |-- reporter.ts
| | | |-- resolve.ts
| | | |-- splitVendorChunk.ts
| | | |-- ssrRequireHook.ts
| | | |-- terser.ts
| | | |-- wasm.ts
| | | |-- worker.ts
| | | |-- workerImportMetaUrl.ts
| | |-- server
| | | |-- hmr.ts
| | | |-- index.ts
| | | |-- moduleGraph.ts
| | | |-- openBrowser.ts
| | | |-- pluginContainer.ts
| | | |-- searchRoot.ts
| | | |-- send.ts
| | | |-- sourcemap.ts
| | | |-- transformRequest.ts
| | | |-- ws.ts
| | |-- ssr
| | |-- index.ts
| | |-- ssrExternal.ts
| | |-- ssrManifestPlugin.ts
| | |-- ssrModuleLoader.ts
| | |-- ssrStacktrace.ts
| | |-- ssrTransform.ts
| |-- types
| |-- alias.d.ts
| |-- anymatch.d.ts
| |-- chokidar.d.ts
| |-- commonjs.d.ts
| |-- connect.d.ts
| |-- customEvent.d.ts
| |-- dynamicImportVars.d.ts
| |-- hmrPayload.d.ts
| |-- hot.d.ts
| |-- http-proxy.d.ts
| |-- importGlob.d.ts
| |-- importMeta.d.ts
| |-- package.json
| |-- shims.d.ts
| |-- terser.d.ts
| |-- ws.d.ts