vite-tsconfig-paths

Resolves TypeScript's tsconfig.json path aliases inside Vite, so aliased imports work without redeclaring them in the Vite config.

Library
npm
v6.1.1
1,632 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
74 /100 Good
Development Activity 68
Maintenance 76
Community 52
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
79 /100 Good
Architecture 82
Code Quality 85
Innovation 68
Learning Curve 80

vite-tsconfig-paths is a Vite plugin that teaches Vite’s module resolver to understand the path aliases already defined in a project’s tsconfig.json or jsconfig.json compilerOptions.paths, so aliased imports like @/components/Button resolve correctly without duplicating the mapping in vite.config.ts. It supports monorepos and TypeScript project references by crawling for tsconfig files, or accepting an explicit list via the projects option, and as of v6 it watches tsconfig files for changes so edits take effect without restarting the dev server.

The plugin ships both eager and lazy discovery strategies, letting large workspaces skip scanning the entire tree for tsconfig files up front. As of v7 it delegates resolution to oxc-resolver instead of loading the TypeScript compiler, avoiding TypeScript version conflicts. It deliberately does not resolve CSS imports (a Vite resolver limitation) and requires allowJs, or the loose option, for path resolution inside non-TypeScript files such as .vue or .svelte templates.

What You Get

  • Automatic resolution of tsconfig.json/jsconfig.json path aliases inside Vite, with no duplicate alias config in vite.config.ts
  • Monorepo-aware project discovery, including TypeScript project references via the extends and references fields
  • Eager or lazy tsconfig discovery strategies, plus file watching so edited tsconfig paths apply without restarting the dev server
  • An oxc-resolver-backed resolution engine (v6+/v7) that avoids loading the TypeScript compiler just to read compilerOptions.paths

Common Use Cases

  • Migrating a create-react-app or webpack project to Vite while keeping existing @/ or ~/ import aliases intact
  • Working in a pnpm/Turborepo monorepo where each package has its own tsconfig.json and path mappings
  • Resolving imports in Vue, Svelte, or MDX files that reference TypeScript path aliases, with allowJs or loose mode enabled
  • Debugging why an aliased import isn’t resolving, using the DEBUG=vite-tsconfig-paths flag or the logFile option’s resolution trace

Under The Hood

Architecture

The plugin is a single Vite plugin object (src/index.ts) with enforce: 'pre' that hooks configResolved, configureServer, buildStart, and a filtered resolveId. On configResolved it builds a TsconfigResolvers instance (src/resolver.ts) that maintains a directory cache keyed by importer path, a WeakMap of parsed Projects to compiled Resolver functions, and a generation counter used to invalidate the cache when tsconfig files are edited. resolveId’s hook filter (id: /^(?!\.\.|\.\/|\0)/) skips relative and virtual-module imports at the native Rolldown/Rollup layer where supported, falling back to manual checks for older Vite/Rollup versions. src/config.ts recursively walks the workspace (bounded by a small inlined promise-concurrency limiter to avoid exhausting file descriptors in large monorepos) and follows a tsconfig’s references field to build a full project graph via get-tsconfig’s readTsconfig.

Tech Stack

Written in TypeScript, built with Rolldown (rolldown.config.ts) and a custom .d.ts generation script, formatted/linted with oxfmt and oxlint rather than Prettier/ESLint. Runtime dependencies are minimal and deliberate: get-tsconfig for parsing tsconfig files (including extends chains), oxc-resolver for the actual module resolution engine as of v6/v7, and debug for its DEBUG=vite-tsconfig-paths tracing convention. vite itself is a peer dependency (>=5.0.0), and the package targets Node >=20.20 for v7. Tests run under Vitest, with execa used to shell out to a real tsc binary for cross-validation against TypeScript’s own resolution.

Code Quality

The test suite (730 lines across test/config.test.ts, test/plugin.test.ts, test/resolver.test.ts) is fixture-driven: plugin.test.ts iterates every directory under test/__fixtures__ and asserts that both a real tsc --noEmit-style invocation and an actual Vite build succeed for that fixture, giving strong confidence that path resolution matches TypeScript’s own behavior rather than a reimplementation of it. Error handling is explicit and user-facing — resolver.ts surfaces malformed tsconfig parse errors through Vite’s logger with an actionable message about the ignoreConfigErrors option, rather than swallowing them. The codebase is fully typed, uses oxlint (a stricter, faster ESLint alternative) for static analysis, and CI is configured under .github/.

What Makes It Unique

Rather than reimplementing TypeScript’s path-mapping semantics from scratch, later versions of the plugin lean on oxc-resolver, a Rust-based resolver shared with the broader oxc tooling ecosystem, specifically to avoid needing the TypeScript compiler as a peer dependency — a deliberate design choice called out in the README to unblock projects experimenting with TypeScript 7’s rewritten (non-npm-typescript) toolchain. Its lazy discovery mode, which only parses a directory’s tsconfig when an import from that directory is actually seen, is a comprehensive answer to a real scaling problem in large monorepos, one that many comparable resolver plugins address only partially or not at all.

Used by 68 apps in this directory

Python
73%
AGPL 3.0

OpenViking

AI Development · AI Memory · Databases

40,705

An open-source context database that gives AI agents a unified filesystem for memory, resources, and skills with hierarchical tiered retrieval.

View details
85
Repo Health
75
Technical
64
Dependency
Built with
Python 73%
TypeScript 12%
Rust 11%
Updated 6 days ago
TypeScript
98%
Other

Outline

Collaboration · Knowledge Management

41,045

A fast, real-time collaborative knowledge base for growing teams built on React, Node.js, and ProseMirror.

View details
91
Repo Health
87
Technical
68
Dependency
Built with
TypeScript 98%
Updated 6 days ago
TypeScript
98%
AGPL 3.0

paseo

AI Agents · AI Code Assistants

21,830

One unified interface to orchestrate Claude Code, Codex, Copilot, OpenCode, and Pi agents in parallel from desktop, mobile, or the terminal.

View details
88
Repo Health
83
Technical
66
Dependency
Built with
TypeScript 98%
Updated 6 days ago
TypeScript
96%
MIT

Payload CMS

Blogging · CMS · Developer Tools

45,458

The open-source, Next.js-native headless CMS that lives inside your /app folder and gives you a full TypeScript backend instantly.

View details
92
Repo Health
88
Technical
65
Dependency
Built with
TypeScript 96%
Updated 6 days ago
Rust
76%
GPL 3.0

Pipedash

Developer Tools · Devops · Monitoring

1,103

One dashboard to monitor, trigger, and cancel CI/CD pipelines across GitHub, GitLab, Jenkins, Tekton, Buildkite, ArgoCD, and Bitbucket — desktop, Docker, or iOS.

View details
80
Repo Health
64
Technical
73
Dependency
Built with
Rust 76%
TypeScript 24%
Updated 6 days ago
TypeScript
67%
AGPL 3.0

Plane

Collaboration · Productivity · Project Management

61,353

Open-source project management platform to replace Jira, Linear, and ClickUp — with built-in cycles, real-time collaborative docs, and full self-hosting.

View details
92
Repo Health
82
Technical
77
Dependency
Built with
TypeScript 67%
Python 30%
Updated 1 weeks ago
Python
62%
Apache 2.0

Polar

Developer Tools · Ecommerce · Invoicing Finance

10,410

Open source payments infrastructure that turns software into a business — subscriptions, usage-based billing, digital products, and merchant-of-record compliance in one platform.

View details
90
Repo Health
82
Technical
66
Dependency
Built with
Python 62%
TypeScript 31%
Updated 1 weeks ago
TypeScript
51%
ZLIB

Portainer

Devops

38,707

A lightweight, open-source web UI that puts Docker, Kubernetes, and Podman management within reach of any team—no CLI expertise required.

View details
93
Repo Health
79
Technical
65
Dependency
Built with
TypeScript 51%
Go 38%
Updated 1 weeks ago
Python
55%
Other

PostHog

Ab Testing Experimentation · Analytics · Developer Tools

40,397

The all-in-one open source product platform combining analytics, session replay, feature flags, error tracking, AI observability, and a built-in data warehouse in a single self-hostable stack.

View details
92
Repo Health
80
Technical
65
Dependency
Built with
Python 55%
TypeScript 36%
Updated 6 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers