# System map — vuejs/core

> Canonical page: https://codevetter.com/unpack/vue/system-map

# System map — vuejs/core

Scanned commit 4ab865a848a1da3d10fb674f857e5fff13094644 (2026-09-18). Generated by codevetter codevetter 1.12.0 on 2026-09-22.

A pnpm workspace (`packages/*` + `packages-private/*`) of eleven published-or-private packages with a strict compiler/runtime separation enforced by lint rules. There is no server, database, or persistent storage layer — the "storage" is the filesystem (dist bundles) plus in-memory LRU caches in the compiler. Builds go through `scripts/build.js` → `rollup.config.js`, which fans one package out into esm-bundler/esm-browser/cjs/global/runtime variants; types are stitched separately via `tsc -p tsconfig.build.json --noCheck && rollup -c rollup.dts.config.js`. Tests run under Vitest with five named projects (unit, unit-gc, unit-jsdom, e2e, e2e-browser). Deployment is npm publish from a tag-triggered GitHub Actions workflow, plus continuous pre-release publishing via pkg-pr-new on every push.
- The workspace is defined by `pnpm-workspace.yaml` covering `packages/*` and `packages-private/*`, with a shared dependency `catalog:` pinning @babel/parser, entities, estree-walker, magic-string, source-map-js and vite, plus a `minimumReleaseAge: 1440` supply-chain guard and `trustPolicy: no-downgrade`. — [pnpm-workspace.yaml](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/pnpm-workspace.yaml)
- The published package graph is compiler-sfc → {compiler-core, compiler-dom}, compiler-dom → compiler-core, runtime-dom → runtime-core → reactivity, and `vue` → {compiler-dom, runtime-dom}; the contributing guide documents this as a mermaid diagram and forbids compiler packages importing runtime code (shared logic must go to `@vue/shared`). — [.github/contributing.md#L283-L317](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/.github/contributing.md#L283-L317) [packages/vue/package.json](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages/vue/package.json)
- `packages/vue/src/index.ts` is the full-build entrypoint: it imports `compile` from `@vue/compiler-dom`, wraps it in `compileToFunction` with a module-level `compileCache` keyed by `genCacheKey(template, options)`, and calls `registerRuntimeCompiler(compileToFunction)` so runtime-core can compile `template` options on the fly. — [packages/vue/src/index.ts#L1-L100](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages/vue/src/index.ts#L1-L100) [packages/runtime-core/src/component.ts#L979-L995](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages/runtime-core/src/component.ts#L979-L995)
- `packages/vue/src/runtime.ts` is the runtime-only entrypoint built as `dist/vue.esm-bundler.js`; it re-exports `@vue/runtime-dom` and stubs `compile` with a dev-only warning that names the exact alias to configure per build target. — [packages/vue/src/runtime.ts](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/packages/vue/src/runtime.ts)
- `scripts/build.js` resolves each target's `buildOptions.formats` from its package.json, deletes `dist` unless a specific `--formats` was requested, then shells out to `rollup -c` passing COMMIT (from `git rev-parse --short=7 HEAD`), NODE_ENV, TARGET, FORMATS, PROD_ONLY and SOURCE_MAP through `--environment`. — [scripts/build.js#L19-L60](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/scripts/build.js#L19-L60) [scripts/build.js#L157-L199](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/scripts/build.js#L157-L199)
- `rollup.config.js` maps seven `PackageFormat` values (esm-bundler, esm-browser, cjs, global, esm-bundler-runtime, esm-browser-runtime, global-runtime) to concrete `dist/<name>.<format>.js` paths and, under NODE_ENV=production, additionally emits `.prod.js` configs minified with `@swc/core`. — [rollup.config.js#L55-L112](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/rollup.config.js#L55-L112)
- Compile-time feature flags are injected by `resolveDefine()` in rollup.config.js — `__COMPAT__`, `__FEATURE_SUSPENSE__` (always true), `__FEATURE_OPTIONS_API__` and `__FEATURE_PROD_DEVTOOLS__` (left as runtime-overridable `__VUE_*` globals only in bundler-ESM builds) — which is why dead-code paths guarded by these flags vanish from browser/global bundles. — [rollup.config.js#L170-L200](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/rollup.config.js#L170-L200) [vitest.config.ts#L5-L22](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/vitest.config.ts#L5-L22)
- Cross-package imports resolve via three parallel mechanisms that must be kept in sync: `compilerOptions.paths` in tsconfig.json, the `entries` map generated by `scripts/aliases.js` (shared by Vitest and Rollup), and pnpm workspace links. — [tsconfig.json#L18-L24](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/tsconfig.json#L18-L24) [scripts/aliases.js](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/scripts/aliases.js) [.github/contributing.md#L269-L282](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/.github/contributing.md#L269-L282)
- CI is layered: `.github/workflows/ci.yml` calls the reusable `test.yml` and then runs a `continuous-release` job publishing every push via `pnpx pkg-pr-new publish --compact --pnpm './packages/*'`; `release.yml` fires only on `v*` tags, requires the `Release` environment, and runs `pnpm release --publishOnly`. — [.github/workflows/ci.yml](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/.github/workflows/ci.yml) [.github/workflows/release.yml](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/.github/workflows/release.yml)
- `test.yml` splits into four jobs — unit-test (ubuntu), unit-test-windows, e2e-test (installs puppeteer Chromium and `playwright install chromium`, then runs `node scripts/verify-treeshaking.js`), and lint-and-test-dts (eslint, prettier check, `tsc --noEmit`, and `pnpm run test-dts`). — [.github/workflows/test.yml#L1-L125](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/.github/workflows/test.yml#L1-L125)
- `netlify.toml` contains only `NODE_VERSION = "24"` and `NPM_FLAGS = "--version"` to suppress Netlify's own install step, implying the actual playground build/publish commands are configured in the Netlify UI rather than in-repo. (inferred) — [netlify.toml](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/netlify.toml)
- Release mechanics live in `scripts/release.js`: it parses `--preid/--dry/--tag/--skipBuild/--skipTests/--skipGit/--publishOnly/--registry`, and appends `--provenance` to the npm publish flags only when `process.env.CI` is set and no custom `--registry` was given. — [scripts/release.js#L27-L70](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/scripts/release.js#L27-L70) [scripts/release.js#L419-L430](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/scripts/release.js#L419-L430)
- Git hooks are installed by `simple-git-hooks` on postinstall: pre-commit runs `lint-staged` + `pnpm check`, and commit-msg runs `scripts/verify-commit.js`, which enforces a conventional-commit regex over a fixed type list (feat|fix|docs|dx|style|refactor|perf|test|workflow|build|ci|chore|types|wip|release). — [package.json#L37-L52](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/package.json#L37-L52) [scripts/verify-commit.js](https://github.com/vuejs/core/blob/4ab865a848a1da3d10fb674f857e5fff13094644/scripts/verify-commit.js)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
