Skip to content
大纲

细嚼慢咽从0看vite(3.1.3)源码

主要核心代码

packages/vite

如何阅读

先看管理工具使用的命令是pnpm,跟目录是:pnpm-workspace.yaml

yaml
packages:
  - 'packages/*' 
  - 'playground/**'

使用的是monorepo,当前的packages下的每个文件夹都是一个独立的小项目

packages是项目相关主要内容

playground 测试packages构建且调试的文件夹

按道理先阅读每个文件的

阅读顺序 README.md文件 ,但里面只是简单地功能介绍

(目前是个人理解,后面继续阅读可能会重新调整) 先看更目录下的

  1. CONTRIBUTING.md

这里描述了当前贡献指南,如何调试当前项目

  1. 根目录下的package.json

  2. 阅读packages/vite/package.json

  3. 然后就是packages/vite/src (简单看一下目录结构)

  4. 正式调试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

参考文章

markdwon 生成目录