microsoft/TypeScript
Dependencies
typescript ships with zero runtime dependencies. Every dev dependency is pinned in package.json and package-lock.json.
Why zero runtime deps
When users install typescript, the only thing they get is the compiler itself plus a few small CLI shims. Pulling in a dependency tree at install time would slow installs, raise the supply-chain attack surface, and cause version conflicts in monorepos. The team has stuck to this principle for a decade.
Dev dependencies
Categorised by role.
Build / runner
hereby— thegulp-style task runner drivingHerebyfile.mjs.esbuild— JS bundler producinglib/tsc.js,lib/tsserver.js,lib/typescript.js, etc.@dprint/formatter,@dprint/typescript,dprint— the Rust-based code formatter.glob— file globbing utility used by build scripts.chokidar— filesystem watcher used inside the test harness for incremental scenarios.
Test
mocha— JavaScript test runner.mocha-fivemat-progress-reporter— compact progress reporter for parallel runs.chai,@types/chai— assertion library.@esfx/canceltoken— cancellation primitives the test harness uses.source-map-support,@types/source-map-support— readable stack traces from compiled JS.c8— V8-native code coverage.monocart-coverage-reports— extra coverage reports (HTML + LCov).playwright— browser test automation (used by the browser-bridge tests).diff— text-diff utility used in baseline comparison.
Lint and quality
eslint,@eslint/js— ESLint v10.typescript-eslint,@typescript-eslint/utils,@typescript-eslint/type-utils,@typescript-eslint/rule-tester— TypeScript-aware ESLint plugins.eslint-plugin-regexp— regex linting rules.globals— list of language globals used by the ESLint config.knip— dead-code / unused-export detector.
Process and config
minimist,@types/minimist— argument parsing in build scripts.jsonc-parser— JSON-with-comments parser used by build scripts.fast-xml-parser— XML parsing for some Azure DevOps interop scripts.picocolors— small ANSI colour helper for build script output.ms,@types/ms— duration parser/formatter.which,@types/which— locate executables.tslib— runtime helpers consumed when--importHelpersis set; pinned here so the helpers infactory/emitHelpers.tsstay in sync.
Octokit / Azure DevOps
@octokit/rest— GitHub API client used by release scripts.azure-devops-node-api— Azure Pipelines API client used by release publishing.
Misc types
@types/node— Node.js typings.@types/mocha,@types/chai,@types/source-map-support,@types/which,@types/ms,@types/minimist— typings for the corresponding packages.
Self-host
typescript(^6.0.2) — the published version of TypeScript itself, used to type-check the source. The build promotes a freshly-built compiler intolib/(the LKG); subsequent type-checks use the LKG via this dev dependency.
Lockfile size
package-lock.json is ~370 KB / ~10,000 lines. The depth comes from playwright and the @typescript-eslint/* family — both pull in long transitive trees.
Dependency policy
- Dependabot (
.github/dependabot.yml) runs daily PRs to bump dev dependencies. About a third of recent commits are dependabot bumps. - No new runtime dependencies. Maintainers will reject PRs that add anything to
dependencies. - Pinning. Dev dependencies use caret ranges (
^x.y.z) but the lockfile pins exact versions. Major version bumps require manual review.
See also
- how-to-contribute/tooling — how each tool is wired into the build.
Herebyfile.mjs— the orchestrator.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.