voidzero-dev / voidzero-dev/vite-plus

☂️ Plan for 2026 Q3 (Jul - Sep)

Aperta
#2,405 2 commenti 24 reazioni 1 assegnatario Rivendicata da @fengmk2 Vedi su GitHub
Lingua principale
Rust
Stelle
5.8k
Fork
261
Merge medio
1g 34m
PR unite (30g)
135

Descrizione

This plan shows our community and collaborators our current goals and timelines.

Our main goal for Q3 is to release **Vite+ 1.0**.

This list is not complete. Search the existing issues first. If you need a feature that is not here, add a comment to this issue. Write a detailed description of the requirement.

You can also find us on [Discord](https://discord.com/invite/cC6TEVFKSx).

---

## What 1.0 means

1.0 is a commitment to stability. This is what it covers:

* Semver applies to the `vp` CLI and to the Vite+ config schema. Command names, flags, config keys, and the locations of generated files will not change in 1.x.
* Bundled tools keep their own version numbers. Vite+ 1.0 does not mean that each bundled tool is also 1.0. We will document this policy.
* We will publish a list of the supported platforms. The list will show the operating system, the architecture, the libc version, and the Node.js version.

## Breaking changes come before 1.0

These changes are difficult to make after 1.0. Thus we will make them first:

- [x] Rename the environment variables that start with `VITE_` ([#2206](https://github.com/voidzero-dev/vite-plus/issues/2206))
- [x] Move the configuration to the XDG paths ([#827](https://github.com/voidzero-dev/vite-plus/issues/827))
- [ ] Change how `vp` finds a custom cache directory ([#2298](https://github.com/voidzero-dev/vite-plus/issues/2298))
- [ ] Remove the lint and format wrapper bin, to make IDE support stable ([#1557](https://github.com/voidzero-dev/vite-plus/issues/1557))
- [ ] Correct the bin conflict with `oxlint` and `oxfmt` ([#1482](https://github.com/voidzero-dev/vite-plus/issues/1482))
- [ ] Complete the alias strategy ([#2023](https://github.com/voidzero-dev/vite-plus/issues/2023))
- [x] Change how Vite+ manages package managers ([#2375](https://github.com/voidzero-dev/vite-plus/issues/2375))

The package-manager change has three parts:

1. Vite+ will replace Corepack with its own shims for npm, pnpm, Yarn, and Bun.
2. `vp env` will manage the package manager and Node.js together. The `pin`, `use`, `install`, `clean`, and `current` commands will control both.
3. Ordinary package-manager commands will resolve and run the appropriate Vite+-managed package manager without implicitly modifying `package.json`.

This change affects you if you use Corepack directly, if your scripts read `vp env --json`, or if your workflow relies on package-manager commands implicitly adding or updating package-manager metadata in `package.json`. Most other workflows stay the same.

Tell us now if your project depends on one of these changes.

## Correctness and stability

Monorepo behavior:

- [x] Decide what `vp dev` does in the root directory of a monorepo ([#770](https://github.com/voidzero-dev/vite-plus/issues/770))
- [ ] Correct `vp create` when it runs in a monorepo ([#820](https://github.com/voidzero-dev/vite-plus/issues/820))
- [ ] Correct `vp run --filter`, which reports a cycle that does not exist ([#1610](https://github.com/voidzero-dev/vite-plus/issues/1610))
- [ ] Let `vp staged` find the workspace-root config from a subdirectory ([#2177](https://github.com/voidzero-dev/vite-plus/issues/2177))

Windows and WSL2. In these items, fspy is the file-access tracker that task caching uses:

- [ ] Install `vp` in LocalAppData ([#1592](https://github.com/voidzero-dev/vite-plus/issues/1592))
- [ ] Correct fspy, which fails on WSL2 ([#1643](https://github.com/voidzero-dev/vite-plus/issues/1643))
- [ ] Correct the fspy tests, which fail when `node` finds the Vite+ shim ([#1599](https://github.com/voidzero-dev/vite-plus/issues/1599))

Core correctness:

- [x] Remove the circular binding resolution between `vite-plus-core` and `vite-plus` ([#2054](https://github.com/voidzero-dev/vite-plus/issues/2054))
- [ ] Correct `mergeConfig`, which breaks the build of other packages ([#1709](https://github.com/voidzero-dev/vite-plus/issues/1709))
- [ ] Add support for Vite SSG ([#1315](https://github.com/voidzero-dev/vite-plus/issues/1315))

CI and developer experience:

- [ ] Validate the IDE configuration ([#1456](https://github.com/voidzero-dev/vite-plus/issues/1456))
- [x] Add a `ci` subcommand that does a clean install ([#1389](https://github.com/voidzero-dev/vite-plus/issues/1389))
- [ ] Keep the output of the oxlint GitHub reporter in `vp check` ([#925](https://github.com/voidzero-dev/vite-plus/issues/925))

## Vitest 5

`vp test` runs Vitest. Vite+ declares Vitest as a dependency and ships it with the CLI. In Q3 we will move that dependency from Vitest 4 to Vitest 5.

Vitest 5 adds a browser trace view, a new benchmarking API, and support for nested projects. It also makes large workspaces faster, because inline projects can now share one Vite server.

* Vitest writes report artifacts under `.vitest/`. This applies to the HTML, JSON, JUnit, and blob reporters, and to the attachments directory.
* Vitest clears mocks before each test.
* The benchmark API is new.
* A new `sharedViteServer` option is on by default.

We will:

- [ ] Update the Vitest dependency and all the `@vitest/*` packages
- [ ] Update the `vite-plus/test*` exports for the new Vitest API
- [ ] Update Vite+ for the new Vitest plugin and configuration API
- [ ] Write a migration guide for the users of `vp test`

We will make this change before 1.0. If we make it after 1.0, the behavior of `vp test` changes soon after a release that we call stable.

## Remote task caching (Experimental Feature)

Local caching in Vite Task is complete. In Q3 we will add:

- [ ] Remote caching ([#1519](https://github.com/voidzero-dev/vite-plus/issues/1519))
- [ ] Cache configuration for `vp build` and `vp pack` ([#2011](https://github.com/voidzero-dev/vite-plus/issues/2011))
- [ ] GitHub Actions cache support in `setup-vp` ([#2013](https://github.com/voidzero-dev/vite-plus/issues/2013))

## More migration options

These paths upgrade a project to Vite+, or to a new Vite+ version:

- [ ] Upgrade an existing Vite+ project to a new Vite+ version
- [ ] Migrate a project from `vite@7` to Vite+
- [ ] Migrate a project from `vitest@3` to Vite+

These paths migrate a project from a different tool:

- [ ] Migrate from Turborepo and Nx
- [ ] Migrate from Jest [`ref`](https://main.vitest.dev/guide/migration.html#jest)
- [x] Migrate from tsup and tsdown to `vp pack` ([#2101](https://github.com/voidzero-dev/vite-plus/issues/2101))
- [ ] Migrate from Biome

We will also improve the quality of the migration:

- [ ] Correct the problems that our tests on real projects found ([#2037](https://github.com/voidzero-dev/vite-plus/issues/2037))
- [ ] Migrate the ESLint configuration of each workspace package in a monorepo ([#1168](https://github.com/voidzero-dev/vite-plus/issues/1168))
- [ ] Migrate only the given directory, and not the workspace root ([#2124](https://github.com/voidzero-dev/vite-plus/issues/2124))
- [ ] Stop `vp migrate` from hanging when the pinned pnpm stops during the install ([#2020](https://github.com/voidzero-dev/vite-plus/issues/2020))

## Distribution

We will distribute `vp` through more channels:

- [ ] Homebrew ([#1171](https://github.com/voidzero-dev/vite-plus/issues/1171))
- [ ] mise ([#943](https://github.com/voidzero-dev/vite-plus/issues/943))
- [ ] Nix and NixOS ([#1899](https://github.com/voidzero-dev/vite-plus/issues/1899))
- [ ] Other version management tools ([#1373](https://github.com/voidzero-dev/vite-plus/issues/1373))

We will also make installation more reliable:

- [ ] Report an error when the installation does not complete ([#2170](https://github.com/voidzero-dev/vite-plus/issues/2170))
- [x] Record the version range of a global bin installation ([#2247](https://github.com/voidzero-dev/vite-plus/issues/2247))

Version pinning: When you install `vp` with a system package manager, your project keeps its own Vite+ version. The global `vp` finds the project-local version and runs it. A new global installation does not upgrade a project that has a pinned version.

Linux: We will publish a list of the supported libc versions and architectures. We will not make a package for each distribution.

## Agent support

We want Vite+ to be the default toolchain for agent-driven JavaScript development. In Q3 we will add:

- [ ] An official Vite+ agent skill. The skill will show the `vp` command patterns and the workflows.
- [ ] A guide for coding agents that use the `vp` commands ([#1537](https://github.com/voidzero-dev/vite-plus/issues/1537))

## ~~`vp doc`~~ (on hold)

See https://github.com/voidzero-dev/vite-plus/pull/2476#issuecomment-5322359939

## `vp install` improvements

A warm install is an install that finds all the necessary files in the package store. The global virtual store is a store layout that shares one copy of each package between projects. In Q3 we will:

- [ ] Make warm installs faster with the global virtual store of pnpm
- [x] Support pnpm v12
- [x] Support npm v12 ([#1823](https://github.com/voidzero-dev/vite-plus/issues/1823))
- [ ] Improve the security defaults ([#1419](https://github.com/voidzero-dev/vite-plus/issues/1419), [#1806](https://github.com/voidzero-dev/vite-plus/issues/1806), [#1826](https://github.com/voidzero-dev/vite-plus/issues/1826))

## Not planned for Q3

We will not do this work in Q3:

* An MCP server for `vp`
* Auto-accessor transpilation. This work depends on Oxc. ([#1556](https://github.com/voidzero-dev/vite-plus/issues/1556))
* `vp deploy`. This work waits for the [Vite Deploy RFC](https://github.com/vitejs/vite/discussions/20907).
* The IntelliJ extension pack ([#919](https://github.com/voidzero-dev/vite-plus/issues/919))
* A dependency graph visualization for monorepos ([#1182](https://github.com/voidzero-dev/vite-plus/issues/1182))
* More integration with Nuxt and Astro ([#1506](https://github.com/voidzero-dev/vite-plus/issues/1506))

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.