Skip to content

feat(aube): add first-class aube package manager support#1762

Open
okikio wants to merge 8 commits into
voidzero-dev:mainfrom
ThunderStrike:add-aube-support
Open

feat(aube): add first-class aube package manager support#1762
okikio wants to merge 8 commits into
voidzero-dev:mainfrom
ThunderStrike:add-aube-support

Conversation

@okikio
Copy link
Copy Markdown

@okikio okikio commented Jun 4, 2026

  • Adds first-class support for the Aube package manager across Vite+’s dependency-management surface (normalized vp commands, vp pm passthrough, shims, create, and migrate).
  • Treats Aube as a peer to pnpm/npm/yarn/bun for detection, workspace handling, and command routing.
  • Part of a larger effort to bring end-to-end Aube support to Vite+.

Context / Motivation

  • Vite+ previously had no Aube support. Aube projects couldn't be detected, and package-manager forwarding/shims could not reliably map to Aube semantics.
  • Goal is compatibility-first: preserve existing pnpm behavior, and make Aube projects behave predictably without requiring users to memorize a separate command set.

What Changed

  • Detection + shims
    • Detects Aube via packageManager, aube-workspace.yaml, aube-lock.yaml, and aube-lock.*.yaml (branch-specific lockfiles).
    • Routes Aube shim family (aube / aubr / aubx) the same way pnpm / pnpx and npm / npx are routed.
  • Package-manager downloads
    • Downloads Aube via its npm wrapper (@endevco/aube) and runs the native installer step so the expected binaries/shims exist after install.
  • Command mapping (normalized vp commands + vp pm)
    • Implements Aube-aware flag ordering and capability differences (including dropping/warning on pnpm-only flags that Aube doesn’t support).
    • Extends "pnpm-like" features to Aube where applicable (notably approve-builds and stage flows).
  • Workspace handling + migration
    • Treats aube-workspace.yaml as a first-class monorepo marker.
    • When Aube and pnpm markers/config coexist during migration, keeps precedence rules explicit and avoids clobbering pnpm-era workspace YAML while Aube adoption is in progress.
    • Migrator understands package.json aube.* config alongside pnpm.* (including precedence where both exist).
  • Docs + fixtures
    • Documentation updates for detection order and shim behavior in Aube projects.
    • Adds Aube-focused snap-test fixtures and updates existing snapshots where help text or behavior now mentions aube.

User-Visible Behavior Changes

  • vp create --package-manager aube becomes a supported option.
  • vp dependency commands (install, add, remove, update, outdated, list, why, dlx, pack, prune, publish, cache, plus vp pm …) route to Aube when Aube is detected.
  • Help output and option annotations reflect pnpm/aube parity where appropriate.

Related Work

Tests

  • just check
  • just test
  • pnpm test:unit
  • pnpm -F vite-plus snap-test-global and review snapshot diffs (Aube fixtures + updated help output)

Risk / Rollout Notes

  • Medium risk: changes affect package-manager detection and argument routing, which can impact day-to-day install/update workflows.
  • Mitigation: compatibility-first precedence rules, targeted Aube-specific handling where it diverges from pnpm, and expanded snap coverage around CLI output.

ran-dall and others added 5 commits June 4, 2026 07:26
Add aube as a supported package manager alongside the existing pnpm-first repository workflow.

- detect packageManager: aube@x.y.z plus aube lock/workspace files
- auto-install pinned aube versions through vite_install
- create native shims for aube, aubr, and aubx
- dispatch install/add/remove/run/why flows through aube
- update package-manager prompts, docs, issue metadata, and tests
- preserve existing pnpm setup, lockfiles, scripts, and CI behavior

Validated with vite_install command/package-manager tests and an end-to-end aube smoke test.
Aube is pnpm-compatible in the places Vite+ relies on a workspace YAML and pnpm-style manifest config, but its CLI surface and lockfile behavior differ enough that we need explicit handling.

This updates workspace detection to treat aube-workspace.yaml as a first-class monorepo marker, prefers strict packageManager tool matching for aube shims, and teaches detection to recognize branch-specific aube lockfiles (aube-lock.*.yaml).

On the package-management side, vp now translates add/install/outdated/remove/update/why/approve-builds and related flags to aube’s supported options (including pnpm-like --filter ordering), and emits warnings for flags aube doesn’t implement so we don’t silently mislead users.
This teaches the JS CLI layer to treat aube-workspace.yaml as a monorepo marker when walking up for config and workspace discovery.

In create flows we also align Aube with pnpm’s workspace-YAML override behavior: newly scaffolded Aube monorepos prefer aube-workspace.yaml, and we keep the aliased vite/vitest devDeps so the workspace override remains observable (e.g. via vp why).

Finally, Aube opts into the same auto-install ignore-scripts guard as pnpm to avoid failing early installs before users can approve build scripts.
vp migrate now treats Aube as pnpm-compatible while respecting its own workspace marker and manifest namespace.

When migrating standalone projects, we decide between package.json config and a pnpm-compatible workspace YAML based on existing pnpm/aube fields, prefer the aube namespace when present, and apply the Vite+ overrides without clobbering unrelated user config.

For YAML-based migrations we pick the right workspace file (pnpm-workspace.yaml when it exists, otherwise aube-workspace.yaml), and we remove Vite dependency selectors consistently across both pnpm and aube override maps.
Update the user-facing guides and READMEs to treat Aube as a supported package manager alongside pnpm/npm/yarn/bun, including its workspace markers, lockfiles, and shim alias pairs.

RFCs are refreshed to keep flag mappings, examples, and wording consistent with the new pnpm/aube split (especially where pnpm-style workspace YAML and --filter ordering matter).
Copilot AI review requested due to automatic review settings June 4, 2026 08:37
@netlify
Copy link
Copy Markdown

netlify Bot commented Jun 4, 2026

Deploy Preview for viteplus-preview canceled.

Name Link
🔨 Latest commit a6b089f
🔍 Latest deploy log https://app.netlify.com/projects/viteplus-preview/deploys/6a21447be101d70008f2a257

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

This PR adds first-class support for the Aube package manager across Vite+ docs/RFCs, TypeScript workspace utilities, and Rust package-manager dispatch/install logic.

Changes:

  • Extend package-manager detection, shims, and command resolution to include aube (plus its workspace YAML + lockfiles).
  • Teach migration/create/workspace utilities to treat aube-workspace.yaml as a monorepo marker and handle pnpm-compatible workspace YAML semantics.
  • Update RFCs and documentation to reflect pnpm/aube capability parity and flag support.

Reviewed changes

Copilot reviewed 65 out of 65 changed files in this pull request and generated no comments.

Show a summary per file
File Description
rfcs/why-package-command.md Updates why RFC docs to include Aube parity with pnpm where applicable
rfcs/update-package-command.md Updates update RFC docs/matrices to include Aube mappings and support notes
rfcs/pm-command-group.md Updates vp pm RFC docs to mark pnpm/aube-specific features
rfcs/outdated-package-command.md Adds Aube mappings and notes for outdated and its format/pattern limitations
rfcs/link-unlink-package-commands.md Updates link/unlink RFC docs to include pnpm/aube-specific behavior
rfcs/install-command.md Updates install RFC docs/matrix and filtering notes to include Aube
rfcs/approve-builds-command.md Updates approve-builds RFC docs to include Aube semantics
rfcs/add-remove-package-commands.md Updates add/remove RFC docs and filter-pattern notes to include Aube
packages/cli/src/utils/workspace.ts Adds aube-workspace.yaml detection and updates workspace YAML editing behavior
packages/cli/src/utils/prompts.ts Extends auto-install ignore-scripts guard and interactive PM selection to include Aube
packages/cli/src/utils/tests/workspace.spec.ts Adds tests for Aube workspace YAML precedence/creation behavior
packages/cli/src/types/package.ts Adds PackageManager.aube constant with doc comment
packages/cli/src/resolve-vite-config.ts Treats aube-workspace.yaml as a workspace-root marker during upward search
packages/cli/src/migration/migrator.ts Extends migration rewriting to support pnpm-like/Aube namespaces + workspace YAML resolution
packages/cli/src/migration/bin.ts Updates migration help text to mention pnpm/aube behavior
packages/cli/src/migration/tests/migrator.spec.ts Adds migration tests for Aube workspace YAML + catalog resolution precedence
packages/cli/src/create/templates/monorepo.ts Ensures monorepo template output uses aube-workspace.yaml for Aube projects
packages/cli/src/create/org-resolve.ts Updates monorepo marker list in doc comment to include Aube workspace YAML
packages/cli/src/create/bin.ts Updates create CLI help to list aube as a supported package-manager option
packages/cli/src/create/tests/org-resolve.spec.ts Adds test that aube-workspace.yaml is treated as a monorepo marker
packages/cli/src/create/tests/monorepo.spec.ts Extends aliased deps retention test coverage to Aube
packages/cli/binding/src/package_manager.rs Adds Aube PM type mapping and monorepo detection via Aube workspace YAML
packages/cli/binding/src/exec/workspace.rs Updates exec-workspace behavior comment to include Aube parity
packages/cli/README.md Updates CLI README to mention Aube and its workspace YAML override instructions
docs/guide/why.md Mentions Aube as a supported package manager in the docs narrative
docs/guide/run.md Mentions aube run parity and updates filter syntax attribution to pnpm/aube
docs/guide/migrate.md Updates migration guide notes to include pnpm/aube behavior
docs/guide/install.md Documents Aube detection precedence, shims, rebuild behavior, and staged publishing notes
docs/guide/env.md Documents Aube shim aliases (aube/aubr/aubx) alongside other PM shims
docs/.vitepress/theme/components/home/CoreFeature3Col.vue Adds aube to homepage PM list
crates/vite_pm_cli/src/lib.rs Updates crate docs to include Aube in PM detection list
crates/vite_pm_cli/src/cli.rs Updates CLI flag docs to mark pnpm/aube-specific behavior where relevant
crates/vite_install/src/package_manager.rs Implements Aube detection, download/install handling, shims, and tests
crates/vite_install/src/commands/why.rs Extends why command resolution to treat Aube like pnpm where applicable
crates/vite_install/src/commands/whoami.rs Routes Aube whoami through npm similarly to pnpm
crates/vite_install/src/commands/update.rs Adds explicit Aube update mapping and tests
crates/vite_install/src/commands/unlink.rs Extends unlink mapping to Aube
crates/vite_install/src/commands/stage.rs Extends staged-publishing mapping to Aube
crates/vite_install/src/commands/remove.rs Adds explicit Aube remove mapping and tests
crates/vite_install/src/commands/rebuild.rs Extends rebuild mapping to Aube
crates/vite_install/src/commands/publish.rs Extends publish mapping to Aube
crates/vite_install/src/commands/prune.rs Extends prune mapping to Aube
crates/vite_install/src/commands/pack.rs Extends pack mapping to Aube
crates/vite_install/src/commands/outdated.rs Adds explicit Aube outdated mapping + warnings for unsupported flags + tests
crates/vite_install/src/commands/logout.rs Routes Aube logout through npm similarly to pnpm
crates/vite_install/src/commands/login.rs Routes Aube login through npm similarly to pnpm
crates/vite_install/src/commands/list.rs Extends list mapping to pnpm/aube filter ordering
crates/vite_install/src/commands/link.rs Extends link mapping to Aube
crates/vite_install/src/commands/install.rs Extends install mapping to pnpm/aube filter ordering + docs
crates/vite_install/src/commands/dlx.rs Extends dlx dispatch to Aube and fixes bin-path selection
crates/vite_install/src/commands/dist_tag.rs Routes Aube dist-tag through npm similarly to pnpm
crates/vite_install/src/commands/dedupe.rs Extends dedupe mapping to Aube
crates/vite_install/src/commands/config.rs Extends config mapping to Aube
crates/vite_install/src/commands/cache.rs Extends cache mapping to Aube and improves warning message
crates/vite_install/src/commands/audit.rs Extends audit mapping to Aube
crates/vite_install/src/commands/approve_builds.rs Adds explicit Aube approve-builds mapping + doc updates
crates/vite_install/src/commands/add.rs Adds explicit Aube add mapping + tests
crates/vite_install/README.md Updates crate README to mention Aube support
crates/vite_global_cli/src/shim/dispatch.rs Updates comments/docs to include Aube in strict tool matching and Node handling notes
crates/vite_global_cli/src/commands/env/package_metadata.rs Updates metadata doc to include Aube
crates/vite_global_cli/src/cli.rs Updates comment to include Aube in PM forwarding
README.md Updates top-level README to mention Aube and its workspace YAML override instructions
.github/workflows/test-vp-create.yml Updates workflow assertions to treat Aube like pnpm for aliased deps retention
.github/ISSUE_TEMPLATE/bug_report.yml Adds Aube to bug-report package-manager choices
.devcontainer/devcontainer-lock.json Adds devcontainer feature lockfile for reproducible container setup
Comments suppressed due to low confidence (4)

packages/cli/src/utils/prompts.ts:1

  • The comment says “Aube follows pnpm's install semantics here, so it opts into the same guard”, but the current version gating still depends on semver.coerce(packageManagerVersion). If Aube’s version is missing/“latest”/non-semver, coerced becomes undefined and the function will return false, disabling the intended --ignore-scripts guard for Aube. Consider handling Aube explicitly (e.g., always enable the guard for Aube, or add an Aube-specific version check with a sensible fallback when coercion fails) so behavior matches the documented intent.
    crates/vite_install/src/package_manager.rs:1
  • download_aube_package_manager now requires executing a JS installer via "node" on PATH. In environments where Vite+ manages Node and the system node isn’t available (or PATH is intentionally minimal, e.g., CI containers), this can make Aube PM download fail even though Vite+ could otherwise provide a Node runtime. Prefer invoking the Vite+-managed Node binary (or a resolved Node path used elsewhere in the project) instead of assuming node exists globally; alternatively, fail with a dedicated, actionable error that tells users how to provide a Node runtime at this stage.
    packages/cli/src/migration/migrator.ts:1
  • The stale lint-staged detector includes aubr, aubx, and aube run/aube x, but it does not match the common direct invocation aube lint-staged (nor an aube exec lint-staged form, if supported). This can cause migrations to miss and not rewrite/remove stale hooks for Aube setups. Expand the alternation to include aube (and any supported exec variant) so Aube projects get the same lint-staged migration behavior as pnpm/bun/npm.
    packages/cli/src/utils/workspace.ts:1
  • doc.getIn(['packages']) is assumed to be a YAMLSeq, but if the YAML contains an unexpected type (e.g., a scalar/object due to manual edits), packages.add(...) will throw. To make this robust, validate that the node is actually a sequence before calling .add, and if it isn’t, replace/normalize it into a YAMLSeq (or emit a clear error) before mutating.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

okikio added 2 commits June 4, 2026 08:44
Updates existing global CLI snapshots and adds new fixtures for the aube package manager.
Updates local CLI snapshots and adds coverage for the aube package manager commands.
@socket-security
Copy link
Copy Markdown

socket-security Bot commented Jun 4, 2026

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addednpm/​test-vite-plus-other@​1.0.0100100100100100

View full report

Signed-off-by: Okiki Ojo <okiki@thunderstrike.co>
@fengmk2
Copy link
Copy Markdown
Member

fengmk2 commented Jun 4, 2026

According to the discussion at #1593, the current user base of aube has not yet reached the required level.

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.

4 participants