Viteのコードを読む - ディレクトリ構造とテスト実行

(全然ブログ書いてなかった...)

Viteのコードを読んでみようという試み

Viteが盛り上がっていて個人的にも使っているので中身を少しでも把握したい。

大変だろうけど、バージョンが上がりまくって機能追加されてからだと中身追うのも無理になりそうなので、今のうちに見れるだけ見てみるという試み。心が折れたらやめるかもしれない。

読む対象

  • v2.8.3
  • hash: e2349569cf96e506e0d5fff1d043727a77fdad70

ファイル一覧を眺める

とりあえず何も考えずに tree コマンドで列挙してみた

見てみる(クリックで展開)

.
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── docs
│   ├── blog
│   │   └── announcing-vite2.md
│   ├── config
│   │   └── index.md
│   ├── guide
│   │   ├── api-hmr.md
│   │   ├── api-javascript.md
│   │   ├── api-plugin.md
│   │   ├── assets.md
│   │   ├── backend-integration.md
│   │   ├── build.md
│   │   ├── comparisons.md
│   │   ├── dep-pre-bundling.md
│   │   ├── env-and-mode.md
│   │   ├── features.md
│   │   ├── index.md
│   │   ├── migration.md
│   │   ├── ssr.md
│   │   ├── static-deploy.md
│   │   ├── using-plugins.md
│   │   └── why.md
│   ├── images
│   │   ├── bundler.png
│   │   ├── esm.png
│   │   ├── graph.png
│   │   ├── vercel-configuration.png
│   │   └── vite-plugin-inspect.png
│   ├── index.md
│   ├── plugins
│   │   └── index.md
│   └── public
│       ├── _headers
│       ├── cypress.svg
│       ├── divriots.png
│       ├── logo.svg
│       ├── mux.svg
│       ├── plaid.svg
│       ├── stackblitz.svg
│       ├── tailwind-labs.svg
│       ├── vite.mp3
│       ├── voice.svg
│       └── vuejobs.png
├── jest.config.ts
├── netlify.toml
├── package.json
├── packages
│   ├── create-vite
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── __tests__
│   │   │   └── cli.spec.ts
│   │   ├── index.js
│   │   ├── package.json
│   │   ├── template-lit
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src
│   │   │   │   ├── favicon.svg
│   │   │   │   └── my-element.js
│   │   │   └── vite.config.js
│   │   ├── template-lit-ts
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src
│   │   │   │   ├── favicon.svg
│   │   │   │   ├── my-element.ts
│   │   │   │   └── vite-env.d.ts
│   │   │   ├── tsconfig.json
│   │   │   ├── tsconfig.node.json
│   │   │   └── vite.config.ts
│   │   ├── template-preact
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src
│   │   │   │   ├── app.jsx
│   │   │   │   ├── favicon.svg
│   │   │   │   ├── index.css
│   │   │   │   ├── logo.jsx
│   │   │   │   └── main.jsx
│   │   │   └── vite.config.js
│   │   ├── template-preact-ts
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src
│   │   │   │   ├── app.tsx
│   │   │   │   ├── favicon.svg
│   │   │   │   ├── index.css
│   │   │   │   ├── logo.tsx
│   │   │   │   ├── main.tsx
│   │   │   │   ├── preact.d.ts
│   │   │   │   └── vite-env.d.ts
│   │   │   ├── tsconfig.json
│   │   │   ├── tsconfig.node.json
│   │   │   └── vite.config.ts
│   │   ├── template-react
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src
│   │   │   │   ├── App.css
│   │   │   │   ├── App.jsx
│   │   │   │   ├── favicon.svg
│   │   │   │   ├── index.css
│   │   │   │   ├── logo.svg
│   │   │   │   └── main.jsx
│   │   │   └── vite.config.js
│   │   ├── template-react-ts
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src
│   │   │   │   ├── App.css
│   │   │   │   ├── App.tsx
│   │   │   │   ├── favicon.svg
│   │   │   │   ├── index.css
│   │   │   │   ├── logo.svg
│   │   │   │   ├── main.tsx
│   │   │   │   └── vite-env.d.ts
│   │   │   ├── tsconfig.json
│   │   │   ├── tsconfig.node.json
│   │   │   └── vite.config.ts
│   │   ├── template-svelte
│   │   │   ├── README.md
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── jsconfig.json
│   │   │   ├── package.json
│   │   │   ├── public
│   │   │   │   └── favicon.ico
│   │   │   ├── src
│   │   │   │   ├── App.svelte
│   │   │   │   ├── assets
│   │   │   │   │   └── svelte.png
│   │   │   │   ├── lib
│   │   │   │   │   └── Counter.svelte
│   │   │   │   ├── main.js
│   │   │   │   └── vite-env.d.ts
│   │   │   └── vite.config.js
│   │   ├── template-svelte-ts
│   │   │   ├── README.md
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── public
│   │   │   │   └── favicon.ico
│   │   │   ├── src
│   │   │   │   ├── App.svelte
│   │   │   │   ├── assets
│   │   │   │   │   └── svelte.png
│   │   │   │   ├── lib
│   │   │   │   │   └── Counter.svelte
│   │   │   │   ├── main.ts
│   │   │   │   └── vite-env.d.ts
│   │   │   ├── svelte.config.js
│   │   │   ├── tsconfig.json
│   │   │   ├── tsconfig.node.json
│   │   │   └── vite.config.ts
│   │   ├── template-vanilla
│   │   │   ├── _gitignore
│   │   │   ├── favicon.svg
│   │   │   ├── index.html
│   │   │   ├── main.js
│   │   │   ├── package.json
│   │   │   └── style.css
│   │   ├── template-vanilla-ts
│   │   │   ├── _gitignore
│   │   │   ├── favicon.svg
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src
│   │   │   │   ├── main.ts
│   │   │   │   ├── style.css
│   │   │   │   └── vite-env.d.ts
│   │   │   └── tsconfig.json
│   │   ├── template-vue
│   │   │   ├── README.md
│   │   │   ├── _gitignore
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── public
│   │   │   │   └── favicon.ico
│   │   │   ├── src
│   │   │   │   ├── App.vue
│   │   │   │   ├── assets
│   │   │   │   │   └── logo.png
│   │   │   │   ├── components
│   │   │   │   │   └── HelloWorld.vue
│   │   │   │   └── main.js
│   │   │   └── vite.config.js
│   │   └── template-vue-ts
│   │       ├── README.md
│   │       ├── _gitignore
│   │       ├── index.html
│   │       ├── package.json
│   │       ├── public
│   │       │   └── favicon.ico
│   │       ├── src
│   │       │   ├── App.vue
│   │       │   ├── assets
│   │       │   │   └── logo.png
│   │       │   ├── components
│   │       │   │   └── HelloWorld.vue
│   │       │   ├── env.d.ts
│   │       │   └── main.ts
│   │       ├── tsconfig.json
│   │       ├── tsconfig.node.json
│   │       └── vite.config.ts
│   ├── playground
│   │   ├── alias
│   │   │   ├── __tests__
│   │   │   │   └── alias.spec.ts
│   │   │   ├── customResolver.js
│   │   │   ├── dir
│   │   │   │   ├── from-script-src.js
│   │   │   │   ├── module
│   │   │   │   │   ├── index.js
│   │   │   │   │   └── package.json
│   │   │   │   ├── test.css
│   │   │   │   └── test.js
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── test.js
│   │   │   └── vite.config.js
│   │   ├── assets
│   │   │   ├── __tests__
│   │   │   │   └── assets.spec.ts
│   │   │   ├── css
│   │   │   │   ├── css-url.css
│   │   │   │   ├── fonts.css
│   │   │   │   ├── icons.css
│   │   │   │   ├── import.css
│   │   │   │   └── nested
│   │   │   │       └── at-imported-css-url.css
│   │   │   ├── fonts
│   │   │   │   ├── Inter-Italic.woff
│   │   │   │   └── Inter-Italic.woff2
│   │   │   ├── foo.js
│   │   │   ├── index.html
│   │   │   ├── nested
│   │   │   │   ├── asset.png
│   │   │   │   ├── fragment-bg.svg
│   │   │   │   ├── fragment.svg
│   │   │   │   ├── icon.png
│   │   │   │   └── �\203\206�\202��\203\210-測試-white\ space.png
│   │   │   ├── package.json
│   │   │   ├── static
│   │   │   │   ├── icon.png
│   │   │   │   ├── import-expression.js
│   │   │   │   ├── raw.css
│   │   │   │   └── raw.js
│   │   │   ├── vite.config.js
│   │   │   └── �\203\206�\202��\203\210-測試-white\ space.js
│   │   ├── backend-integration
│   │   │   ├── __tests__
│   │   │   │   └── backend-integration.spec.ts
│   │   │   ├── frontend
│   │   │   │   ├── entrypoints
│   │   │   │   │   ├── global.css
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── main.ts
│   │   │   │   ├── images
│   │   │   │   │   └── logo.png
│   │   │   │   └── styles
│   │   │   │       ├── background.css
│   │   │   │       └── tailwind.css
│   │   │   ├── package.json
│   │   │   ├── postcss.config.js
│   │   │   ├── references.css
│   │   │   ├── tailwind.config.js
│   │   │   └── vite.config.js
│   │   ├── cli
│   │   │   ├── __tests__
│   │   │   │   ├── cli.spec.ts
│   │   │   │   └── serve.js
│   │   │   ├── index.html
│   │   │   ├── index.js
│   │   │   ├── package.json
│   │   │   └── vite.config.js
│   │   ├── cli-module
│   │   │   ├── __tests__
│   │   │   │   ├── cli-module.spec.ts
│   │   │   │   └── serve.js
│   │   │   ├── index.html
│   │   │   ├── index.js
│   │   │   ├── package.json
│   │   │   └── vite.config.js
│   │   ├── css
│   │   │   ├── __tests__
│   │   │   │   └── css.spec.ts
│   │   │   ├── async-treeshaken.css
│   │   │   ├── async-treeshaken.js
│   │   │   ├── async.css
│   │   │   ├── async.js
│   │   │   ├── composed.module.css
│   │   │   ├── composed.module.less
│   │   │   ├── composed.module.scss
│   │   │   ├── composes-path-resolving.module.css
│   │   │   ├── css-dep
│   │   │   │   ├── index.css
│   │   │   │   ├── index.js
│   │   │   │   ├── index.scss
│   │   │   │   ├── index.styl
│   │   │   │   └── package.json
│   │   │   ├── dep.css
│   │   │   ├── glob-dep
│   │   │   │   ├── bar.css
│   │   │   │   └── foo.css
│   │   │   ├── glob-dep.css
│   │   │   ├── imported-at-import.css
│   │   │   ├── imported.css
│   │   │   ├── index.html
│   │   │   ├── inlined.css
│   │   │   ├── less.less
│   │   │   ├── linked-at-import.css
│   │   │   ├── linked.css
│   │   │   ├── main.js
│   │   │   ├── minify.css
│   │   │   ├── mod.module.css
│   │   │   ├── mod.module.scss
│   │   │   ├── nested
│   │   │   │   ├── _index.scss
│   │   │   │   ├── _partial.scss
│   │   │   │   ├── icon.png
│   │   │   │   ├── nested.less
│   │   │   │   └── nested.styl
│   │   │   ├── ok.png
│   │   │   ├── options
│   │   │   │   ├── absolute-import.styl
│   │   │   │   └── relative-import.styl
│   │   │   ├── package.json
│   │   │   ├── pkg-dep
│   │   │   │   ├── _index.scss
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── postcss-caching
│   │   │   │   ├── blue-app
│   │   │   │   │   ├── imported.css
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── main.js
│   │   │   │   │   ├── package.json
│   │   │   │   │   └── postcss.config.js
│   │   │   │   ├── css.spec.ts
│   │   │   │   └── green-app
│   │   │   │       ├── imported.css
│   │   │   │       ├── index.html
│   │   │   │       ├── main.js
│   │   │   │       ├── package.json
│   │   │   │       └── postcss.config.js
│   │   │   ├── postcss.config.js
│   │   │   ├── sass.scss
│   │   │   ├── stylus.styl
│   │   │   └── vite.config.js
│   │   ├── css-codesplit
│   │   │   ├── __tests__
│   │   │   │   └── css-codesplit.spec.ts
│   │   │   ├── index.html
│   │   │   ├── main.css
│   │   │   ├── main.js
│   │   │   ├── other.js
│   │   │   ├── package.json
│   │   │   ├── style.css
│   │   │   └── vite.config.js
│   │   ├── css-codesplit-cjs
│   │   │   ├── __tests__
│   │   │   │   └── css-codesplit.spec.ts
│   │   │   ├── index.html
│   │   │   ├── main.css
│   │   │   ├── main.js
│   │   │   ├── other.js
│   │   │   ├── package.json
│   │   │   ├── style.css
│   │   │   └── vite.config.js
│   │   ├── data-uri
│   │   │   ├── __tests__
│   │   │   │   └── data-uri.spec.ts
│   │   │   ├── index.html
│   │   │   └── package.json
│   │   ├── define
│   │   │   ├── __tests__
│   │   │   │   └── define.spec.ts
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   └── vite.config.js
│   │   ├── dynamic-import
│   │   │   ├── __tests__
│   │   │   │   └── dynamic-import.spec.ts
│   │   │   ├── css
│   │   │   │   └── index.css
│   │   │   ├── index.html
│   │   │   ├── mxd.js
│   │   │   ├── mxd.json
│   │   │   ├── nested
│   │   │   │   ├── index.js
│   │   │   │   └── shared.js
│   │   │   ├── package.json
│   │   │   ├── qux.js
│   │   │   ├── views
│   │   │   │   ├── bar.js
│   │   │   │   ├── baz.js
│   │   │   │   └── foo.js
│   │   │   └── vite.config.js
│   │   ├── env
│   │   │   ├── __tests__
│   │   │   │   └── env.spec.ts
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   └── vite.config.js
│   │   ├── extensions
│   │   │   ├── __tests__
│   │   │   │   └── extensions.spec.ts
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   └── vite.config.js
│   │   ├── file-delete-restore
│   │   │   ├── App.jsx
│   │   │   ├── Child.jsx
│   │   │   ├── __tests__
│   │   │   │   └── file-delete-restore.spec.ts
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   └── vite.config.js
│   │   ├── fs-serve
│   │   │   ├── __tests__
│   │   │   │   └── fs-serve.spec.ts
│   │   │   ├── entry.js
│   │   │   ├── nested
│   │   │   │   └── foo.js
│   │   │   ├── package.json
│   │   │   ├── root
│   │   │   │   ├── src
│   │   │   │   │   ├── index.html
│   │   │   │   │   └── safe.txt
│   │   │   │   ├── unsafe.txt
│   │   │   │   └── vite.config.js
│   │   │   ├── safe.json
│   │   │   └── unsafe.json
│   │   ├── glob-import
│   │   │   ├── __tests__
│   │   │   │   └── glob-import.spec.ts
│   │   │   ├── dir
│   │   │   │   ├── baz.json
│   │   │   │   ├── foo.js
│   │   │   │   ├── index.js
│   │   │   │   ├── nested
│   │   │   │   │   └── bar.js
│   │   │   │   └── node_modules
│   │   │   │       └── hoge.js
│   │   │   ├── index.html
│   │   │   └── package.json
│   │   ├── hmr
│   │   │   ├── __tests__
│   │   │   │   └── hmr.spec.ts
│   │   │   ├── customFile.js
│   │   │   ├── global.css
│   │   │   ├── hmr.js
│   │   │   ├── hmrDep.js
│   │   │   ├── hmrNestedDep.js
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── unicode-path
│   │   │   │   └── 中�\226\207-�\201��\201��\202\223�\201\224-�\225\234�\200-�\237\214\225�\237\214\226�\237\214\227
│   │   │   │       └── index.html
│   │   │   └── vite.config.js
│   │   ├── html
│   │   │   ├── __tests__
│   │   │   │   └── html.spec.ts
│   │   │   ├── common.css
│   │   │   ├── emptyAttr.html
│   │   │   ├── foo.html
│   │   │   ├── index.html
│   │   │   ├── inline
│   │   │   │   ├── common.js
│   │   │   │   ├── dep1.js
│   │   │   │   ├── dep2.js
│   │   │   │   ├── dep3.js
│   │   │   │   ├── module-graph.dot
│   │   │   │   ├── shared-1.html
│   │   │   │   ├── shared-2.html
│   │   │   │   ├── shared.js
│   │   │   │   ├── unique.html
│   │   │   │   └── unique.js
│   │   │   ├── invalid.html
│   │   │   ├── link.html
│   │   │   ├── main.css
│   │   │   ├── main.js
│   │   │   ├── nested
│   │   │   │   ├── index.html
│   │   │   │   ├── nested.css
│   │   │   │   └── nested.js
│   │   │   ├── noBody.html
│   │   │   ├── noHead.html
│   │   │   ├── package.json
│   │   │   ├── scriptAsync.html
│   │   │   ├── scriptMixed.html
│   │   │   ├── shared.js
│   │   │   ├── unicode-path
│   │   │   │   └── 中�\226\207-�\201��\201��\202\223�\201\224-�\225\234�\200-�\237\214\225�\237\214\226�\237\214\227
│   │   │   │       └── index.html
│   │   │   ├── vite.config.js
│   │   │   └── zeroJS.html
│   │   ├── json
│   │   │   ├── __tests__
│   │   │   │   └── json.spec.ts
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── public
│   │   │   │   └── public.json
│   │   │   └── test.json
│   │   ├── legacy
│   │   │   ├── __tests__
│   │   │   │   ├── legacy.spec.ts
│   │   │   │   └── ssr
│   │   │   │       ├── legacy-ssr.spec.ts
│   │   │   │       └── serve.js
│   │   │   ├── async.js
│   │   │   ├── entry-server.js
│   │   │   ├── immutable-chunk.js
│   │   │   ├── index.html
│   │   │   ├── main.js
│   │   │   ├── package.json
│   │   │   ├── style.css
│   │   │   ├── vite.config-custom-filename.js
│   │   │   └── vite.config.js
│   │   ├── lib
│   │   │   ├── __tests__
│   │   │   │   ├── lib.spec.ts
│   │   │   │   └── serve.js
│   │   │   ├── index.dist.html
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src
│   │   │   │   ├── main.js
│   │   │   │   ├── main2.js
│   │   │   │   └── message.js
│   │   │   ├── vite.config.js
│   │   │   └── vite.dyimport.config.js
│   │   ├── multiple-entrypoints
│   │   │   ├── __tests__
│   │   │   │   └── multiple-entrypoints.spec.ts
│   │   │   ├── deps.json
│   │   │   ├── dynamic-a.js
│   │   │   ├── dynamic-b.js
│   │   │   ├── entrypoints
│   │   │   │   ├── a0.js
│   │   │   │   ├── a1.js
│   │   │   │   ├── a10.js
│   │   │   │   ├── a11.js
│   │   │   │   ├── a12.js
│   │   │   │   ├── a13.js
│   │   │   │   ├── a14.js
│   │   │   │   ├── a15.js
│   │   │   │   ├── a16.js
│   │   │   │   ├── a17.js
│   │   │   │   ├── a18.js
│   │   │   │   ├── a19.js
│   │   │   │   ├── a2.js
│   │   │   │   ├── a20.js
│   │   │   │   ├── a21.js
│   │   │   │   ├── a22.js
│   │   │   │   ├── a23.js
│   │   │   │   ├── a24.js
│   │   │   │   ├── a3.js
│   │   │   │   ├── a4.js
│   │   │   │   ├── a5.js
│   │   │   │   ├── a6.js
│   │   │   │   ├── a7.js
│   │   │   │   ├── a8.js
│   │   │   │   └── a9.js
│   │   │   ├── index.html
│   │   │   ├── index.js
│   │   │   ├── package.json
│   │   │   ├── reference.js
│   │   │   ├── reference.scss
│   │   │   └── vite.config.js
│   │   ├── nested-deps
│   │   │   ├── __tests__
│   │   │   │   └── nested-deps.spec.ts
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── test-package-a
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── test-package-b
│   │   │   │   ├── index.js
│   │   │   │   ├── node_modules
│   │   │   │   │   └── test-package-a
│   │   │   │   │       ├── index.js
│   │   │   │   │       └── package.json
│   │   │   │   └── package.json
│   │   │   ├── test-package-c
│   │   │   │   ├── index-es.js
│   │   │   │   ├── index.js
│   │   │   │   ├── package.json
│   │   │   │   └── side.js
│   │   │   ├── test-package-d
│   │   │   │   ├── index.js
│   │   │   │   ├── package.json
│   │   │   │   └── test-package-d-nested
│   │   │   │       ├── index.js
│   │   │   │       └── package.json
│   │   │   ├── test-package-e
│   │   │   │   ├── index.js
│   │   │   │   ├── package.json
│   │   │   │   ├── test-package-e-excluded
│   │   │   │   │   ├── index.js
│   │   │   │   │   └── package.json
│   │   │   │   └── test-package-e-included
│   │   │   │       ├── index.js
│   │   │   │       └── package.json
│   │   │   └── vite.config.js
│   │   ├── optimize-deps
│   │   │   ├── __tests__
│   │   │   │   └── optimize-deps.spec.ts
│   │   │   ├── cjs-dynamic.js
│   │   │   ├── cjs.js
│   │   │   ├── dedupe.js
│   │   │   ├── dep-cjs-compiled-from-cjs
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── dep-cjs-compiled-from-esm
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── dep-esbuild-plugin-transform
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── dep-linked
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── dep-linked-include
│   │   │   │   ├── Test.vue
│   │   │   │   ├── foo.js
│   │   │   │   ├── index.mjs
│   │   │   │   ├── package.json
│   │   │   │   └── test.css
│   │   │   ├── glob
│   │   │   │   └── foo.js
│   │   │   ├── index.html
│   │   │   ├── nested-exclude
│   │   │   │   ├── index.js
│   │   │   │   ├── nested-include
│   │   │   │   │   ├── index.js
│   │   │   │   │   └── package.json
│   │   │   │   └── package.json
│   │   │   ├── package.json
│   │   │   └── vite.config.js
│   │   ├── optimize-missing-deps
│   │   │   ├── __test__
│   │   │   │   ├── optimize-missing-deps.spec.ts
│   │   │   │   └── serve.js
│   │   │   ├── index.html
│   │   │   ├── main.js
│   │   │   ├── missing-dep
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── multi-entry-dep
│   │   │   │   ├── index.browser.js
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── package.json
│   │   │   └── server.js
│   │   ├── package.json
│   │   ├── preload
│   │   │   ├── __tests__
│   │   │   │   └── preload.spec.ts
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── router.js
│   │   │   ├── src
│   │   │   │   ├── App.vue
│   │   │   │   └── components
│   │   │   │       ├── About.vue
│   │   │   │       ├── Hello.vue
│   │   │   │       └── Home.vue
│   │   │   └── vite.config.js
│   │   ├── preserve-symlinks
│   │   │   ├── __tests__
│   │   │   │   └── preserve-symlinks.spec.ts
│   │   │   ├── index.html
│   │   │   ├── moduleA
│   │   │   │   ├── linked.js -> ./src/index.js
│   │   │   │   ├── package.json
│   │   │   │   └── src
│   │   │   │       ├── data.js
│   │   │   │       └── index.js
│   │   │   ├── package.json
│   │   │   └── src
│   │   │       └── main.js
│   │   ├── react
│   │   │   ├── App.jsx
│   │   │   ├── __tests__
│   │   │   │   └── react.spec.ts
│   │   │   ├── components
│   │   │   │   └── Dummy.jsx
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   └── vite.config.ts
│   │   ├── react-emotion
│   │   │   ├── App.jsx
│   │   │   ├── __tests__
│   │   │   │   └── react.spec.ts
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   └── vite.config.ts
│   │   ├── resolve
│   │   │   ├── __tests__
│   │   │   │   └── resolve.spec.ts
│   │   │   ├── browser-field
│   │   │   │   ├── multiple.dot.path.js
│   │   │   │   ├── no-ext-index
│   │   │   │   │   └── index.js
│   │   │   │   ├── no-ext.js
│   │   │   │   ├── not-browser.js
│   │   │   │   ├── out
│   │   │   │   │   ├── cjs.node.js
│   │   │   │   │   └── esm.browser.js
│   │   │   │   ├── package.json
│   │   │   │   └── relative.js
│   │   │   ├── config-dep.js
│   │   │   ├── custom-condition
│   │   │   │   ├── index.custom.js
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── custom-ext.es
│   │   │   ├── custom-main-field
│   │   │   │   ├── index.custom.js
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── dir
│   │   │   │   └── index.js
│   │   │   ├── dir-with-ext
│   │   │   │   └── index.js
│   │   │   ├── dir-with-ext.js
│   │   │   │   └── empty
│   │   │   ├── dir.js
│   │   │   ├── exact-extension
│   │   │   │   ├── file.js
│   │   │   │   └── file.js.js
│   │   │   ├── exports-env
│   │   │   │   ├── browser.js
│   │   │   │   ├── browser.mjs
│   │   │   │   ├── browser.prod.mjs
│   │   │   │   ├── fallback.umd.js
│   │   │   │   └── package.json
│   │   │   ├── exports-path
│   │   │   │   ├── cjs.js
│   │   │   │   ├── deep.js
│   │   │   │   ├── dir
│   │   │   │   │   └── dir.js
│   │   │   │   ├── main.js
│   │   │   │   └── package.json
│   │   │   ├── index.html
│   │   │   ├── inline-package
│   │   │   │   ├── inline.js
│   │   │   │   └── package.json
│   │   │   ├── package.json
│   │   │   ├── ts-extension
│   │   │   │   ├── hello.ts
│   │   │   │   └── index.ts
│   │   │   ├── utf8-bom
│   │   │   │   └── main.js
│   │   │   ├── util
│   │   │   │   ├── bar.util.js
│   │   │   │   └── index.js
│   │   │   └── vite.config.js
│   │   ├── resolve-config
│   │   │   ├── __tests__
│   │   │   │   ├── resolve-config.spec.ts
│   │   │   │   └── serve.js
│   │   │   ├── package.json
│   │   │   └── root
│   │   │       ├── index.js
│   │   │       └── vite.config.js
│   │   ├── resolve-linked
│   │   │   ├── dep.js
│   │   │   ├── package.json
│   │   │   └── src
│   │   │       └── index.js
│   │   ├── shims.d.ts
│   │   ├── ssr-deps
│   │   │   ├── __tests__
│   │   │   │   ├── serve.js
│   │   │   │   └── ssr-deps.spec.ts
│   │   │   ├── define-properties-exports
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── define-property-exports
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── forwarded-export
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── index.html
│   │   │   ├── message
│   │   │   ├── object-assigned-exports
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── only-object-assigned-exports
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── package.json
│   │   │   ├── primitive-export
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── read-file-content
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── require-absolute
│   │   │   │   ├── foo.js
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── server.js
│   │   │   ├── src
│   │   │   │   └── app.js
│   │   │   └── ts-transpiled-exports
│   │   │       ├── index.js
│   │   │       └── package.json
│   │   ├── ssr-html
│   │   │   ├── __tests__
│   │   │   │   ├── serve.js
│   │   │   │   └── ssr-html.spec.ts
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── server.js
│   │   │   └── src
│   │   │       └── app.js
│   │   ├── ssr-pug
│   │   │   ├── __tests__
│   │   │   │   ├── serve.js
│   │   │   │   └── ssr-pug.spec.ts
│   │   │   ├── index.pug
│   │   │   ├── package.json
│   │   │   ├── server.js
│   │   │   └── src
│   │   │       └── app.js
│   │   ├── ssr-react
│   │   │   ├── __tests__
│   │   │   │   ├── serve.js
│   │   │   │   └── ssr-react.spec.ts
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── prerender.js
│   │   │   ├── server.js
│   │   │   ├── src
│   │   │   │   ├── App.jsx
│   │   │   │   ├── add.js
│   │   │   │   ├── circular-dep-init
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── circular-dep-init.js
│   │   │   │   │   ├── module-a.js
│   │   │   │   │   └── module-b.js
│   │   │   │   ├── entry-client.jsx
│   │   │   │   ├── entry-server.jsx
│   │   │   │   ├── forked-deadlock
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── common-module.js
│   │   │   │   │   ├── deadlock-fuse-module.js
│   │   │   │   │   ├── fuse-stuck-bridge-module.js
│   │   │   │   │   ├── middle-module.js
│   │   │   │   │   └── stuck-module.js
│   │   │   │   ├── multiply.js
│   │   │   │   └── pages
│   │   │   │       ├── About.jsx
│   │   │   │       ├── Env.jsx
│   │   │   │       └── Home.jsx
│   │   │   └── vite.config.js
│   │   ├── ssr-vue
│   │   │   ├── __tests__
│   │   │   │   ├── serve.js
│   │   │   │   └── ssr-vue.spec.ts
│   │   │   ├── dep-import-type
│   │   │   │   ├── deep
│   │   │   │   │   └── index.d.ts
│   │   │   │   └── package.json
│   │   │   ├── example-external-component
│   │   │   │   ├── ExampleExternalComponent.vue
│   │   │   │   ├── index.js
│   │   │   │   └── package.json
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── prerender.js
│   │   │   ├── server.js
│   │   │   ├── src
│   │   │   │   ├── App.vue
│   │   │   │   ├── assets
│   │   │   │   │   ├── button.css
│   │   │   │   │   ├── fonts
│   │   │   │   │   │   ├── Inter-Italic.woff
│   │   │   │   │   │   └── Inter-Italic.woff2
│   │   │   │   │   └── logo.png
│   │   │   │   ├── components
│   │   │   │   │   ├── Foo.jsx
│   │   │   │   │   ├── ImportType.vue
│   │   │   │   │   ├── button.js
│   │   │   │   │   └── foo.css
│   │   │   │   ├── entry-client.js
│   │   │   │   ├── entry-server.js
│   │   │   │   ├── main.js
│   │   │   │   ├── pages
│   │   │   │   │   ├── About.vue
│   │   │   │   │   ├── External.vue
│   │   │   │   │   ├── Home.vue
│   │   │   │   │   └── Store.vue
│   │   │   │   └── router.js
│   │   │   ├── vite.config.js
│   │   │   └── vite.config.noexternal.js
│   │   ├── ssr-webworker
│   │   │   ├── __tests__
│   │   │   │   ├── serve.js
│   │   │   │   └── ssr-webworker.spec.ts
│   │   │   ├── package.json
│   │   │   ├── src
│   │   │   │   └── entry-worker.jsx
│   │   │   ├── vite.config.js
│   │   │   └── worker.js
│   │   ├── tailwind
│   │   │   ├── __test__
│   │   │   │   └── tailwind.spec.ts
│   │   │   ├── index.css
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── postcss.config.js
│   │   │   ├── public
│   │   │   │   └── favicon.ico
│   │   │   ├── src
│   │   │   │   ├── App.vue
│   │   │   │   ├── assets
│   │   │   │   │   └── logo.png
│   │   │   │   ├── components
│   │   │   │   │   └── HelloWorld.vue
│   │   │   │   ├── main.js
│   │   │   │   ├── router.ts
│   │   │   │   └── views
│   │   │   │       └── Page.vue
│   │   │   ├── tailwind.config.js
│   │   │   └── vite.config.ts
│   │   ├── testUtils.ts
│   │   ├── tsconfig-json
│   │   │   ├── __tests__
│   │   │   │   └── tsconfig-json.spec.ts
│   │   │   ├── index.html
│   │   │   ├── nested
│   │   │   │   ├── main.ts
│   │   │   │   ├── not-used-type.ts
│   │   │   │   └── tsconfig.json
│   │   │   ├── nested-with-extends
│   │   │   │   ├── main.ts
│   │   │   │   ├── not-used-type.ts
│   │   │   │   └── tsconfig.json
│   │   │   ├── package.json
│   │   │   ├── src
│   │   │   │   ├── main.ts
│   │   │   │   └── not-used-type.ts
│   │   │   └── tsconfig.json
│   │   ├── tsconfig-json-load-error
│   │   │   ├── __tests__
│   │   │   │   └── tsconfig-json-load-error.spec.ts
│   │   │   ├── has-error
│   │   │   │   ├── main.ts
│   │   │   │   └── tsconfig.json
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src
│   │   │   │   └── main.ts
│   │   │   └── tsconfig.json
│   │   ├── tsconfig.json
│   │   ├── vue
│   │   │   ├── Assets.vue
│   │   │   ├── AsyncComponent.vue
│   │   │   ├── CssModules.vue
│   │   │   ├── CustomBlock.vue
│   │   │   ├── CustomBlockPlugin.ts
│   │   │   ├── CustomElement.ce.vue
│   │   │   ├── Hmr.vue
│   │   │   ├── Main.vue
│   │   │   ├── Node.vue
│   │   │   ├── PreProcessors.vue
│   │   │   ├── ReactivityTransform.vue
│   │   │   ├── ScanDep.vue
│   │   │   ├── Slotted.vue
│   │   │   ├── Syntax.vue
│   │   │   ├── __tests__
│   │   │   │   └── vue.spec.ts
│   │   │   ├── assets
│   │   │   │   ├── asset.png
│   │   │   │   └── fragment.svg
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── public
│   │   │   │   └── icon.png
│   │   │   ├── setup-import-template
│   │   │   │   ├── SetupImportTemplate.vue
│   │   │   │   └── template.html
│   │   │   ├── src-import
│   │   │   │   ├── SrcImport.vue
│   │   │   │   ├── script.ts
│   │   │   │   ├── srcImportStyle.vue
│   │   │   │   ├── srcImportStyle2.vue
│   │   │   │   ├── style.css
│   │   │   │   ├── style2.css
│   │   │   │   └── template.html
│   │   │   └── vite.config.ts
│   │   ├── vue-jsx
│   │   │   ├── Comp.tsx
│   │   │   ├── Comps.jsx
│   │   │   ├── OtherExt.tesx
│   │   │   ├── Script.vue
│   │   │   ├── SrcImport.jsx
│   │   │   ├── SrcImport.vue
│   │   │   ├── __tests__
│   │   │   │   └── vue-jsx.spec.ts
│   │   │   ├── index.html
│   │   │   ├── main.jsx
│   │   │   ├── package.json
│   │   │   └── vite.config.js
│   │   ├── vue-lib
│   │   │   ├── __tests__
│   │   │   │   ├── serve.js
│   │   │   │   └── vue-lib.spec.ts
│   │   │   ├── index.html
│   │   │   ├── package.json
│   │   │   ├── src-consumer
│   │   │   │   └── index.ts
│   │   │   ├── src-lib
│   │   │   │   ├── CompA.vue
│   │   │   │   ├── CompB.vue
│   │   │   │   └── index.ts
│   │   │   ├── vite.config.consumer.ts
│   │   │   └── vite.config.lib.ts
│   │   ├── wasm
│   │   │   ├── __tests__
│   │   │   │   └── wasm.spec.ts
│   │   │   ├── heavy.wasm
│   │   │   ├── heavy.wasm.map
│   │   │   ├── index.html
│   │   │   ├── light.wasm
│   │   │   └── package.json
│   │   └── worker
│   │       ├── __tests__
│   │       │   └── worker.spec.ts
│   │       ├── index.html
│   │       ├── my-shared-worker.ts
│   │       ├── my-worker.ts
│   │       ├── newUrl
│   │       │   ├── module.js
│   │       │   ├── url-shared-worker.js
│   │       │   └── url-worker.js
│   │       ├── package.json
│   │       ├── possible-ts-output-worker.mjs
│   │       ├── test-plugin.tsx
│   │       ├── vite.config.ts
│   │       └── workerImport.js
│   ├── plugin-legacy
│   │   ├── CHANGELOG.md
│   │   ├── README.md
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   └── package.json
│   ├── plugin-react
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── api-extractor.json
│   │   ├── package.json
│   │   ├── src
│   │   │   ├── babel.d.ts
│   │   │   ├── fast-refresh.ts
│   │   │   ├── index.ts
│   │   │   └── jsx-runtime
│   │   │       ├── babel-import-to-require.ts
│   │   │       ├── babel-restore-jsx.spec.ts
│   │   │       ├── babel-restore-jsx.ts
│   │   │       └── restore-jsx.ts
│   │   └── tsconfig.json
│   ├── plugin-vue
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── api-extractor.json
│   │   ├── package.json
│   │   ├── src
│   │   │   ├── compiler.ts
│   │   │   ├── handleHotUpdate.ts
│   │   │   ├── helper.ts
│   │   │   ├── index.ts
│   │   │   ├── main.ts
│   │   │   ├── script.ts
│   │   │   ├── style.ts
│   │   │   ├── template.ts
│   │   │   └── utils
│   │   │       ├── descriptorCache.ts
│   │   │       ├── error.ts
│   │   │       └── query.ts
│   │   └── tsconfig.json
│   ├── plugin-vue-jsx
│   │   ├── CHANGELOG.md
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   └── package.json
│   └── vite
│       ├── CHANGELOG.md
│       ├── LICENSE.md
│       ├── README.md
│       ├── api-extractor.json
│       ├── bin
│       │   ├── openChrome.applescript
│       │   └── vite.js
│       ├── client.d.ts
│       ├── package.json
│       ├── rollup.config.js
│       ├── scripts
│       │   └── patchTypes.ts
│       ├── src
│       │   ├── client
│       │   │   ├── client.ts
│       │   │   ├── env.ts
│       │   │   ├── overlay.ts
│       │   │   └── tsconfig.json
│       │   └── node
│       │       ├── __tests__
│       │       │   ├── asset.spec.ts
│       │       │   ├── build.spec.ts
│       │       │   ├── config.spec.ts
│       │       │   ├── dev.spec.ts
│       │       │   ├── packages
│       │       │   │   ├── name
│       │       │   │   │   └── package.json
│       │       │   │   └── noname
│       │       │   │       └── package.json
│       │       │   ├── plugins
│       │       │   │   ├── css.spec.ts
│       │       │   │   └── import.spec.ts
│       │       │   ├── scan.spec.ts
│       │       │   └── utils.spec.ts
│       │       ├── build.ts
│       │       ├── certificate.ts
│       │       ├── cli.ts
│       │       ├── config.ts
│       │       ├── constants.ts
│       │       ├── http.ts
│       │       ├── importGlob.ts
│       │       ├── index.ts
│       │       ├── logger.ts
│       │       ├── optimizer
│       │       │   ├── esbuildDepPlugin.ts
│       │       │   ├── index.ts
│       │       │   ├── registerMissing.ts
│       │       │   └── scan.ts
│       │       ├── packages.ts
│       │       ├── plugin.ts
│       │       ├── plugins
│       │       │   ├── asset.ts
│       │       │   ├── assetImportMetaUrl.ts
│       │       │   ├── clientInjections.ts
│       │       │   ├── css.ts
│       │       │   ├── dataUri.ts
│       │       │   ├── define.ts
│       │       │   ├── esbuild.ts
│       │       │   ├── html.ts
│       │       │   ├── importAnalysis.ts
│       │       │   ├── importAnalysisBuild.ts
│       │       │   ├── index.ts
│       │       │   ├── json.ts
│       │       │   ├── loadFallback.ts
│       │       │   ├── manifest.ts
│       │       │   ├── modulePreloadPolyfill.ts
│       │       │   ├── preAlias.ts
│       │       │   ├── reporter.ts
│       │       │   ├── resolve.ts
│       │       │   ├── ssrRequireHook.ts
│       │       │   ├── terser.ts
│       │       │   ├── wasm.ts
│       │       │   ├── worker.ts
│       │       │   └── workerImportMetaUrl.ts
│       │       ├── preview.ts
│       │       ├── server
│       │       │   ├── __tests__
│       │       │   │   ├── fixtures
│       │       │   │   │   ├── lerna
│       │       │   │   │   │   ├── lerna.json
│       │       │   │   │   │   └── nested
│       │       │   │   │   │       └── package.json
│       │       │   │   │   ├── none
│       │       │   │   │   │   └── nested
│       │       │   │   │   │       └── package.json
│       │       │   │   │   ├── pnpm
│       │       │   │   │   │   ├── nested
│       │       │   │   │   │   │   └── package.json
│       │       │   │   │   │   ├── package.json
│       │       │   │   │   │   └── pnpm-workspace.yaml
│       │       │   │   │   └── yarn
│       │       │   │   │       ├── nested
│       │       │   │   │       │   └── package.json
│       │       │   │   │       └── package.json
│       │       │   │   ├── pluginContainer.spec.ts
│       │       │   │   └── search-root.spec.ts
│       │       │   ├── hmr.ts
│       │       │   ├── index.ts
│       │       │   ├── middlewares
│       │       │   │   ├── base.ts
│       │       │   │   ├── error.ts
│       │       │   │   ├── indexHtml.ts
│       │       │   │   ├── proxy.ts
│       │       │   │   ├── spaFallback.ts
│       │       │   │   ├── static.ts
│       │       │   │   ├── time.ts
│       │       │   │   └── transform.ts
│       │       │   ├── moduleGraph.ts
│       │       │   ├── openBrowser.ts
│       │       │   ├── pluginContainer.ts
│       │       │   ├── searchRoot.ts
│       │       │   ├── send.ts
│       │       │   ├── sourcemap.ts
│       │       │   ├── transformRequest.ts
│       │       │   └── ws.ts
│       │       ├── ssr
│       │       │   ├── __tests__
│       │       │   │   └── ssrTransform.spec.ts
│       │       │   ├── ssrExternal.ts
│       │       │   ├── ssrManifestPlugin.ts
│       │       │   ├── ssrModuleLoader.ts
│       │       │   ├── ssrStacktrace.ts
│       │       │   └── ssrTransform.ts
│       │       ├── tsconfig.json
│       │       └── utils.ts
│       ├── tsconfig.base.json
│       └── 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
│           ├── http-proxy.d.ts
│           ├── importMeta.d.ts
│           ├── package.json
│           ├── shims.d.ts
│           ├── terser.d.ts
│           └── ws.d.ts
├── pnpm-lock.yaml
├── pnpm-workspace.yaml
├── scripts
│   ├── jestEnv.cjs
│   ├── jestGlobalSetup.cjs
│   ├── jestGlobalTeardown.cjs
│   ├── jestPerTestSetup.ts
│   ├── patchEsbuildDist.ts
│   ├── patchFileDeps.ts
│   ├── publishCI.ts
│   ├── release.ts
│   ├── releaseUtils.ts
│   ├── tsconfig.json
│   └── verifyCommit.ts
└── tree.txt

298 directories, 969 files

  • 298 directories, 969 files
  • packages/playground 配下が大きい
    • 215 directories, 628 files を占める
    • 様々な環境でViteを利用するミニマムセットで、全てテストを含んでいる
    • playgroundgrepしてみると、 CONTRIBUTING.md がヒットし、テストに関する記述などが出てくる
    • jestの設定に含まれており、 playwright-chromium 経由で Playwright を起動してブラウザ上でテストが実行される
  • packages/vite がvite本体ぽい
    • 27 directories, 114 files
    • コア部分は意外と小さい

ディレクトリだけ一覧して眺める

ファイル一覧だと Playground 配下が巨大すぎてアレなので、ディレクトリだけで一覧してみる。

  • tree -d
  • playground node_modules は除去

という感じで出力してみた。

.
├── docs
│   ├── blog
│   ├── config
│   ├── guide
│   ├── images
│   ├── plugins
│   └── public
├── packages
│   ├── create-vite
│   │   ├── __tests__
│   │   ├── template-lit
│   │   │   └── src
│   │   ├── template-lit-ts
│   │   │   └── src
│   │   ├── template-preact
│   │   │   └── src
│   │   ├── template-preact-ts
│   │   │   └── src
│   │   ├── template-react
│   │   │   └── src
│   │   ├── template-react-ts
│   │   │   └── src
│   │   ├── template-svelte
│   │   │   ├── public
│   │   │   └── src
│   │   │       ├── assets
│   │   │       └── lib
│   │   ├── template-svelte-ts
│   │   │   ├── public
│   │   │   └── src
│   │   │       ├── assets
│   │   │       └── lib
│   │   ├── template-vanilla
│   │   ├── template-vanilla-ts
│   │   │   └── src
│   │   ├── template-vue
│   │   │   ├── public
│   │   │   └── src
│   │   │       ├── assets
│   │   │       └── components
│   │   └── template-vue-ts
│   │       ├── public
│   │       └── src
│   │           ├── assets
│   │           └── components
│   ├── playground
│   │   └── (※省略)
│   ├── plugin-legacy
│   ├── plugin-react
│   │   ├── dist
│   │   └── src
│   │       └── jsx-runtime
│   ├── plugin-vue
│   │   ├── dist
│   │   └── src
│   │       └── utils
│   ├── plugin-vue-jsx
│   └── vite
│       ├── bin
│       ├── dist
│       │   ├── client
│       │   └── node
│       │       └── chunks
│       ├── scripts
│       ├── src
│       │   ├── client
│       │   └── node
│       │       ├── __tests__
│       │       │   ├── packages
│       │       │   │   ├── name
│       │       │   │   └── noname
│       │       │   └── plugins
│       │       ├── optimizer
│       │       ├── plugins
│       │       ├── server
│       │       │   ├── __tests__
│       │       │   │   └── fixtures
│       │       │   │       ├── lerna
│       │       │   │       │   └── nested
│       │       │   │       ├── none
│       │       │   │       │   └── nested
│       │       │   │       ├── pnpm
│       │       │   │       │   └── nested
│       │       │   │       └── yarn
│       │       │   │           └── nested
│       │       │   └── middlewares
│       │       └── ssr
│       │           └── __tests__
│       └── types
└── scripts
  • そこまで階層が深いわけでもなく、わりとシンプルなディレクトリ構造な印象
  • create-vite vite の2つがコアって感じ

テストを動かしてみる

pnpm i
pnpm test
  • 普通に大量に落ちる。なんでや!
  • Target page, context or browser has been closed
  • https://github.com/vitejs/vite/issues/4543 1回ビルドしないとダメぽい
  • pnpm build 実行 → まだ落ちる

Since Jest will attempt to run tests in parallel, if your machine has many cores this may cause flaky test failures with multiple Playwright instances running at the same time. You can force the tests to run in series with pnpm run test-serve -- --runInBand.

  • らしいので、 pnpm run test-serve -- --runInBand を試したところパスした

とりあえずディレクトリを眺めてテストを通すところまでやった。

最初に全ファイル出力したときは「おおぅ...」となったが、playground系のコードを省いたらわりとなんとかなる気がしてきた。

次→ルートにある各種ファイルを見てみる