Skip to content

feat(cli): per-command defaultPackage - #2305

Merged
fengmk2 merged 7 commits into
feat/cwd-flagfrom
feat/default-package-per-command
Aug 4, 2026
Merged

feat(cli): per-command defaultPackage#2305
fengmk2 merged 7 commits into
feat/cwd-flagfrom
feat/default-package-per-command

Conversation

@fengmk2

@fengmk2 fengmk2 commented Aug 3, 2026

Copy link
Copy Markdown
Member

defaultPackage now also accepts an object mapping the four app commands
individually ({ dev: './apps/web', pack: './packages/ui' }), so one repo
can pack a library while dev targets an app (#2031 review). A string
keeps meaning one directory for all four commands, and a command absent
from the object falls through to the picker/listing resolution. Values
stay static string literals read without executing the config.


Stack created with GitHub Stacks CLIGive Feedback 💬

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

✅ Staging deployment successful!

Preview: https://viteplus-staging.void.app/
Commit: d55c81f

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Native binary sizes (d55c81f)

Final release artifacts built by the canonical build-upstream and build-windows-cli actions.

Artifact Format Base PR Change
vp (Linux x64) Binary 10.52 MiB 10.52 MiB 0 B (0.00%)
vp (Linux x64) gzip -9 4.55 MiB 4.55 MiB 0 B (0.00%)
NAPI (Linux x64) Binary 33.66 MiB 33.66 MiB 0 B (0.00%)
NAPI (Linux x64) gzip -9 13.04 MiB 13.05 MiB +2.69 KiB (+0.02%)
vp (macOS ARM64) Binary 7.84 MiB 7.84 MiB 0 B (0.00%)
vp (macOS ARM64) gzip -9 3.96 MiB 3.96 MiB 0 B (0.00%)
NAPI (macOS ARM64) Binary 40.95 MiB 40.95 MiB 0 B (0.00%)
NAPI (macOS ARM64) gzip -9 17.26 MiB 17.26 MiB +111 B (+0.00%)
vp (Windows x64) Binary 8.43 MiB 8.43 MiB 0 B (0.00%)
vp (Windows x64) gzip -9 3.67 MiB 3.67 MiB 0 B (0.00%)
NAPI (Windows x64) Binary 27.81 MiB 27.81 MiB +2.50 KiB (+0.01%)
NAPI (Windows x64) gzip -9 10.88 MiB 10.88 MiB +1.57 KiB (+0.01%)
Trampoline (Windows x64) Binary 203.00 KiB 203.00 KiB 0 B (0.00%)
Trampoline (Windows x64) gzip -9 97.91 KiB 97.91 KiB +1 B (+0.00%)
Installer (Windows x64) Binary 4.47 MiB 4.47 MiB 0 B (0.00%)
Installer (Windows x64) gzip -9 2.09 MiB 2.09 MiB 0 B (0.00%)

@fengmk2
fengmk2 force-pushed the feat/default-package-per-command branch from f3ddaa6 to 6a4c342 Compare August 3, 2026 13:10
@fengmk2
fengmk2 force-pushed the feat/default-package-per-command branch from 31551cc to a491616 Compare August 3, 2026 14:26
@fengmk2 fengmk2 self-assigned this Aug 3, 2026
@fengmk2
fengmk2 marked this pull request as ready for review August 3, 2026 14:40
@fengmk2
fengmk2 requested review from cpojer and wan9chi August 3, 2026 14:40
@fengmk2
fengmk2 force-pushed the feat/default-package-per-command branch from a491616 to 62dbdb4 Compare August 3, 2026 15:31
@fengmk2
fengmk2 force-pushed the feat/default-package-per-command branch from 62dbdb4 to d96ad5b Compare August 3, 2026 16:05
@fengmk2
fengmk2 force-pushed the feat/default-package-per-command branch from d96ad5b to c8cbb62 Compare August 3, 2026 16:22
@fengmk2
fengmk2 force-pushed the feat/default-package-per-command branch from c8cbb62 to 1b0fb84 Compare August 3, 2026 16:38
@fengmk2
fengmk2 force-pushed the feat/default-package-per-command branch from 1b0fb84 to 85f54c1 Compare August 4, 2026 03:55
@fengmk2
fengmk2 force-pushed the feat/default-package-per-command branch from 85f54c1 to 0e1a964 Compare August 4, 2026 04:02
@fengmk2
fengmk2 force-pushed the feat/default-package-per-command branch from 0e1a964 to 419c0b3 Compare August 4, 2026 05:51
@fengmk2
fengmk2 force-pushed the feat/default-package-per-command branch from 419c0b3 to c4b0ecc Compare August 4, 2026 06:17
@fengmk2
fengmk2 force-pushed the feat/default-package-per-command branch from c4b0ecc to 160f7dd Compare August 4, 2026 06:42
@fengmk2
fengmk2 force-pushed the feat/default-package-per-command branch from 160f7dd to 7fe039b Compare August 4, 2026 06:45
@fengmk2
fengmk2 force-pushed the feat/default-package-per-command branch from 7fe039b to be5398e Compare August 4, 2026 07:06
fengmk2 added a commit that referenced this pull request Aug 4, 2026
per_command and per_command_fallthrough now carry a workspaces field with
apps/web and packages/ui members, matching the review scenario (pack a
library, dev an app) and exercising the workspace-root classification
path instead of the no-metadata fallback (#2305 review).
@fengmk2

fengmk2 commented Aug 4, 2026

Copy link
Copy Markdown
Member Author

@codex review

fengmk2 added a commit that referenced this pull request Aug 4, 2026
vp pack in the same fixture routes to the declared ./packages/ui while
vp build falls through, covering both halves of the object form
(#2305 review).
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Breezy!

Reviewed commit: 360a7766b3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

fengmk2 added 7 commits August 4, 2026 15:50
defaultPackage now also accepts an object mapping the four app commands
individually ({ dev: './apps/web', pack: './packages/ui' }), so one repo
can pack a library while dev targets an app (#2031 review). A string
keeps meaning one directory for all four commands, and a command absent
from the object falls through to the picker/listing resolution. Values
stay static string literals read without executing the config.
Same new-Vite CommonJS config warning as the spread fixture; type: module
keeps the recorded output stable.
The docs-reword conflict resolution left two closing */ on the
defaultPackage doc comment, breaking the dist build's parse.
Same .md.new failing-run leftovers as the base branch; the recorded
snapshots are the reviewed, warning-free versions.
per_command and per_command_fallthrough now carry a workspaces field with
apps/web and packages/ui members, matching the review scenario (pack a
library, dev an app) and exercising the workspace-root classification
path instead of the no-metadata fallback (#2305 review).
vp pack in the same fixture routes to the declared ./packages/ui while
vp build falls through, covering both halves of the object form
(#2305 review).
@fengmk2
fengmk2 force-pushed the feat/default-package-per-command branch from 9150bef to d55c81f Compare August 4, 2026 07:50
@fengmk2
fengmk2 merged commit 2574cd3 into main Aug 4, 2026
67 of 104 checks passed
@fengmk2
fengmk2 deleted the feat/default-package-per-command branch August 4, 2026 08:32
fengmk2 added a commit that referenced this pull request Aug 5, 2026
…t variable renames, and install fixes (#2325)

Release vite-plus v0.2.8: monorepo target resolution, breaking `VP_*`
environment variable renames, and install fixes.

Bare `vp dev`/`build`/`preview`/`pack` at a monorepo root now resolve a
target package instead of silently running against the root, and three
Vite+-specific environment variables move to the `VP_*` prefix without
compatibility aliases. Two failures that broke Vite+ before it could run
are also fixed: the crash on container images that ship no CA
certificates, and the missing Rolldown binding under pnpm's global
virtual store.

### Breaking Changes

- Rename three Vite+-specific environment variables to the `VP_*`
prefix, with no compatibility aliases, so the old names stop working
([#2312](#2312)), by
@jong-kyung:

  | Old | New |
  | --- | --- |
  | `VITE_LOG` | `VP_LOG` |
  | `VITE_GLOBAL_CLI_JS_SCRIPTS_DIR` | `VP_GLOBAL_CLI_JS_SCRIPTS_DIR` |
  | `VITE_UPDATE_TASK_TYPES` | `VP_UPDATE_TASK_TYPES` |

Update any shell profile, CI job, or Dockerfile that sets the old names.

### Highlights

- Resolve a target package for `vp dev`, `build`, `preview`, and `pack`
at a monorepo root: interactive shells get a fuzzy package picker,
non-interactive runs list the candidates and exit 1 instead of building
the root, and a new global `-C <dir>` flag or a `defaultPackage` setting
(a single directory, or an object mapping each of the four commands to
its own directory) skips the prompt
([#2031](#2031),
[#2305](#2305)), by
@fengmk2
- Stop aborting with exit 134 on container images that ship no CA
certificates (Debian slim, distroless): the shared HTTP client now
retries once with the bundled Mozilla root list, like Node's own bundled
roots, and reports a real error instead of panicking when it still
cannot be built
([#2273](#2273),
[#2295](#2295)), by
@jbmusso and @fengmk2
- Resolve the bundled Rolldown binding through platform packages instead
of an undeclared require back into `vite-plus`, fixing `Cannot find
module 'vite-plus/binding'` under pnpm `enable-global-virtual-store` and
in standalone `@voidzero-dev/vite-plus-core` installs
([#2313](#2313)), by
@fengmk2
- Add `vp pm ci` for reproducible frozen-lockfile installs, and `vp pm
patch` / `vp pm patch-commit` for editing dependencies in place on pnpm,
bun, and Yarn Berry (npm and Yarn Classic warn and exit successfully)
([#2082](#2082),
[#2308](#2308)), by
@forehalo and @jong-kyung

### Features

- Upgrade the bundled toolchain: vite `8.1.5` -> `8.2.0`, rolldown
`1.2.0` -> `1.2.2`, oxlint `1.75.0` -> `1.76.0`, oxfmt `0.60.0` ->
`0.61.0`, and Vite DevTools `0.4.5` -> `0.4.10`
([#2302](#2302),
[#2311](#2311)), by
@voidzero-guard[bot]. The new oxfmt and oxlint can flag code that passed
before, so run `vp fmt` after upgrading if your CI runs `vp check`.
- Read the Node.js version from `.nvmrc` when no other version source is
present ([#2244](#2244)),
by @BlankParticle
- Support pnpm v12, which ships as a native binary: Vite+ now downloads
the platform-specific `@pnpm/exe.*` package and generates native shims,
so `pnpm` and `pnpx` work instead of failing to exec
([#2289](#2289)), by
@jong-kyung
- Verify the downloaded bun platform tarball against the registry
`dist.integrity` hash
([#2310](#2310)), by
@jong-kyung

### Fixes & Enhancements

- Let `vp config` install the Git hook dispatcher without creating or
modifying project hook scripts or staged-file configuration, so a custom
`.vite-hooks/pre-commit` survives
([#2280](#2280)), by
@TheAlexLichter
- Nest immutable global package installs under
`packages/<package>/<uuid>` instead of using `#` in the path, which Node
treated as a URL fragment and which broke dynamic imports inside
installed packages
([#2222](#2222)), by
@liangmiQwQ
- Keep the recorded version spec on global installs, so `vp update -g`
follows a dist tag or range instead of silently resolving back to
`latest`, `vp outdated -g` reports Wanted versus Latest, and `vp update
-g --latest` explicitly moves packages back to `latest`
([#2249](#2249)), by
@TheAlexLichter
- Stop deleting a managed Node.js runtime that another process is
concurrently installing
([#2248](#2248)), by
@shulaoda
- Preserve the real exit code when a spawned process is terminated by a
signal on Unix
([#2154](#2154)), by
@liangmiQwQ
- Honor an explicit `vp create --package-manager` outside monorepos
instead of inheriting the manager from a non-monorepo ancestor directory
([#2226](#2226)), by
@jong-kyung
- Scaffold the `vite:library` template into a directory that contains
only `.git`, while still refusing to overwrite existing user files
([#2287](#2287)), by
@RSS1102
- Render help for delegated commands from the local CLI, so `vp
<command> --help` matches the installed toolchain instead of drifting
([#2184](#2184)), by
@liangmiQwQ
- Resolve `typeAware` and `typeCheck` options inherited through Oxlint
`extends`, so `vp check --no-lint` runs and classifies type checking
correctly
([#2228](#2228)), by
@jong-kyung
- Report `(no version)` instead of `unknown` when globally installing a
local package that has no `version` field
([#2232](#2232)), by
@liangmiQwQ

### Refactor

- Rename the Git hooks environment variable to `VP_GIT_HOOKS`, keeping
`VITE_GIT_HOOKS` working as a deprecated alias
([#2195](#2195)), by
@dennybiasiolli
- Consolidate the package manager infrastructure so typed command
arguments are the source of truth for per-manager compatibility
([#2140](#2140)), by
@forehalo
- Generate the Zed language settings from a language list instead of 17
near-identical blocks
([#2294](#2294)), by
@jong-kyung
- Share the agent-file detect and write traversal helpers so both passes
apply identical rules
([#2296](#2296)), by
@jong-kyung
- Drop redundant clippy allow attributes in the global CLI
([#2235](#2235)), by
@shulaoda

### Docs

- Avoid a duplicate `vp` installation step in the onboarding prompt
([#2291](#2291)), by
@Arcadi4
- Recommend stacked pull requests for submitting changes
([#2281](#2281)), by
@fengmk2
- Correct stale delegation comments in the global CLI
([#2236](#2236)), by
@shulaoda
- Improve the release draft review guidance in the release-manager skill
([#2285](#2285)), by
@wan9chi

### Chore

- Stop emitting unmet peer warnings for the `vite-plus` peer of oxfmt
and oxlint on every install
([#2321](#2321)), by
@fengmk2
- Remove duplicate direct dependency declarations so each build
dependency is owned by one workspace
([#2318](#2318)), by
@jong-kyung
- Declare `@emnapi` peers where `@napi-rs/cli` is used
([#2319](#2319)), by
@jong-kyung
- Exclude `rollup-tests` from the workspace and update `basic-ftp`
([#2322](#2322)), by
@fengmk2
- Remove unused `EnvConfig` fields
([#2320](#2320)), by
@jong-kyung
- Remove the obsolete peer dependency merger tool
([#2303](#2303)), by
@jong-kyung
- Stop the staging deploy from triggering on external pull requests
([#2293](#2293)), by
@BlankParticle
- Kill the real `vp` process, and kill it before its children, in the
`env_install_interrupt` snapshot test
([#2299](#2299),
[#2316](#2316)), by
@fengmk2
- Suppress racy optimizer logs in the `vitest_browser_mode` snapshot
test ([#2297](#2297)), by
@fengmk2
- Remove the obsolete auto-install environment from the snapshot tests
([#2163](#2163)), by
@liangmiQwQ

### Bundled Versions

| Tool | Version | Source |
| --------------- | ---------- |
-------------------------------------------------------------------------------------------------
|
| vite | `8.2.0` |
[`fa79f9a`](vitejs/vite@fa79f9a)
|
| rolldown | `1.2.2` |
[`872b98a`](rolldown/rolldown@872b98a)
|
| tsdown | `0.22.14` | [npm](https://npmx.dev/package/tsdown/v/0.22.14)
|
| vitest | `4.1.10` | [npm](https://npmx.dev/package/vitest/v/4.1.10) |
| oxlint | `1.76.0` | [npm](https://npmx.dev/package/oxlint/v/1.76.0) |
| oxlint-tsgolint | `7.0.2001` |
[npm](https://npmx.dev/package/oxlint-tsgolint/v/7.0.2001) |
| oxfmt | `0.61.0` | [npm](https://npmx.dev/package/oxfmt/v/0.61.0) |

### Upgrade

```bash
vp upgrade
```

### New Contributors

@jbmusso, @Arcadi4, @dennybiasiolli, @RSS1102

**Full Changelog**:
v0.2.7...v0.2.8

---

Merging this PR will trigger the release workflow.

---------

Co-authored-by: voidzero-guard[bot] <278573678+voidzero-guard[bot]@users.noreply.github.com>
Co-authored-by: MK <fengmk2@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants