Skip to content

feat: expose package manager detection and download APIs - #308

Merged
fengmk2 merged 2 commits into
mainfrom
11-15-feat_export_download_package_manager_helper
Nov 21, 2025
Merged

feat: expose package manager detection and download APIs#308
fengmk2 merged 2 commits into
mainfrom
11-15-feat_export_download_package_manager_helper

Conversation

@fengmk2

@fengmk2fengmk2 commented Nov 15, 2025

Copy link
Copy Markdown
Member

TL;DR

Expose package manager detection and download functionality through the CLI binding API.

What changed?

  • Added two new public functions to the CLI binding API:
    • detectWorkspace: Detects the workspace root, package manager type, version, and whether it's a monorepo
    • downloadPackageManager: Downloads a specified package manager version
  • Refactored the package manager download logic in vite_install to make it more modular and reusable
  • Added TypeScript type definitions and JSDoc documentation for the new functions
  • Created tests for the new functionality with fixtures for different project types

How to test?

  1. Run the new tests:

    pnpm test packages/cli/src/__tests__/detectWorkspace.spec.ts
    pnpm test packages/cli/src/__tests__/downloadPackageManager.spec.ts
    
  2. Try using the new API in a project:

    import{detectWorkspace,downloadPackageManager}from'@vitejs/cli';// Detect workspace and package managerconstworkspace=awaitdetectWorkspace(process.cwd());console.log(workspace);// Download a package managerconstresult=awaitdownloadPackageManager({name: 'pnpm',version: 'latest'});console.log(result);

Why make this change?

This change enables external tools and plugins to leverage Vite's package manager detection and download capabilities. By exposing these functions through the CLI binding API, other tools can reliably determine the project structure and ensure the correct package manager is available without reimplementing this logic.

@fengmk2Graphite App

fengmk2 commented Nov 15, 2025

Copy link
Copy Markdown
MemberAuthor

@fengmk2
fengmk2 changed the base branch from 11-11-feat_run_command_with_fspy to graphite-base/308November 15, 2025 08:32
@fengmk2
fengmk2force-pushed the 11-15-feat_export_download_package_manager_helper branch from f9b8d8e to fead428CompareNovember 15, 2025 08:39
@fengmk2
fengmk2 changed the base branch from graphite-base/308 to 11-11-feat_run_command_with_fspyNovember 15, 2025 08:39
@fengmk2
fengmk2force-pushed the 11-15-feat_export_download_package_manager_helper branch 2 times, most recently from e9e6dac to 57029f1CompareNovember 15, 2025 09:51
@fengmk2
fengmk2force-pushed the 11-11-feat_run_command_with_fspy branch 2 times, most recently from 21916a3 to 1db7b58CompareNovember 15, 2025 09:57
@fengmk2
fengmk2force-pushed the 11-15-feat_export_download_package_manager_helper branch from 57029f1 to ebce813CompareNovember 15, 2025 09:57
@fengmk2fengmk2 changed the title feat: export download package manager helperfeat: expose package manager detection and download APIsNov 18, 2025
@fengmk2
fengmk2force-pushed the 11-15-feat_export_download_package_manager_helper branch from ebce813 to 8bf1272CompareNovember 19, 2025 06:27
@fengmk2
fengmk2force-pushed the 11-11-feat_run_command_with_fspy branch from 1db7b58 to f3cb301CompareNovember 19, 2025 06:27
@fengmk2
fengmk2force-pushed the 11-15-feat_export_download_package_manager_helper branch from 8bf1272 to d1a3ebbCompareNovember 19, 2025 06:53
@fengmk2
fengmk2force-pushed the 11-11-feat_run_command_with_fspy branch 2 times, most recently from c315cb6 to f409ec7CompareNovember 19, 2025 07:04
@fengmk2
fengmk2force-pushed the 11-15-feat_export_download_package_manager_helper branch from d1a3ebb to 8a3eb33CompareNovember 19, 2025 07:04
@fengmk2
fengmk2force-pushed the 11-11-feat_run_command_with_fspy branch from f409ec7 to dbd0974CompareNovember 19, 2025 07:09
@fengmk2
fengmk2force-pushed the 11-15-feat_export_download_package_manager_helper branch 2 times, most recently from b34995d to 74cd86eCompareNovember 19, 2025 08:21
@fengmk2
fengmk2force-pushed the 11-11-feat_run_command_with_fspy branch 2 times, most recently from af40762 to bc1410dCompareNovember 19, 2025 08:24
@fengmk2
fengmk2force-pushed the 11-15-feat_export_download_package_manager_helper branch 2 times, most recently from 5859dd3 to b0f8412CompareNovember 19, 2025 09:00
@fengmk2
fengmk2force-pushed the 11-11-feat_run_command_with_fspy branch from bc1410d to d258eb1CompareNovember 19, 2025 09:00
@fengmk2
fengmk2force-pushed the 11-15-feat_export_download_package_manager_helper branch 2 times, most recently from a41588e to d5a6269CompareNovember 19, 2025 10:03
@fengmk2
fengmk2force-pushed the 11-11-feat_run_command_with_fspy branch 2 times, most recently from 59f106d to 4fd6e56CompareNovember 19, 2025 11:05
@fengmk2
fengmk2force-pushed the 11-15-feat_export_download_package_manager_helper branch from d5a6269 to 37853c1CompareNovember 19, 2025 11:05
@fengmk2
fengmk2 marked this pull request as ready for review November 19, 2025 12:56
@fengmk2fengmk2 self-assigned this Nov 20, 2025
@fengmk2
fengmk2 changed the base branch from 11-11-feat_run_command_with_fspy to graphite-base/308November 20, 2025 07:07
@fengmk2
fengmk2force-pushed the 11-15-feat_export_download_package_manager_helper branch from 37853c1 to e94dab5CompareNovember 20, 2025 07:07
@graphite-app
graphite-appBot changed the base branch from graphite-base/308 to mainNovember 20, 2025 07:08
@fengmk2
fengmk2force-pushed the 11-15-feat_export_download_package_manager_helper branch from e94dab5 to 1dfda67CompareNovember 20, 2025 07:08
CopilotAI review requested due to automatic review settings November 21, 2025 03:40
@fengmk2
fengmk2force-pushed the 11-15-feat_export_download_package_manager_helper branch from 1dfda67 to 810a8d5CompareNovember 21, 2025 03:40
@fengmk2Graphite App

fengmk2 commented Nov 21, 2025

Copy link
Copy Markdown
MemberAuthor

Merge activity

  • Nov 21, 3:41 AM UTC: Graphite rebased this pull request as part of a merge.
  • Nov 21, 5:08 AM UTC: @fengmk2 merged this pull request with Graphite.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull Request Overview

This PR exposes package manager detection and download functionality through the CLI binding API, enabling external tools to leverage Vite's package manager capabilities without reimplementing the logic.

Key Changes:

  • Added detectWorkspace and downloadPackageManager functions to the public API
  • Refactored download_package_manager in the Rust crate to return package metadata (install_dir, package_name, version)
  • Created comprehensive test suites with fixtures for pnpm and npm monorepos

Reviewed Changes

Copilot reviewed 13 out of 15 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
packages/cli/binding/src/package_manager.rsNew module implementing the NAPI bindings for workspace detection and package manager download
packages/cli/binding/src/lib.rsExports the new public functions
packages/cli/binding/index.jsExports the new functions to JavaScript
packages/cli/binding/index.d.tsTypeScript type definitions for the new API
crates/vite_install/src/package_manager.rsRefactored download_package_manager to return tuple with metadata and made functions public
crates/vite_install/src/lib.rsExports newly public functions
packages/cli/binding/tests/detect-workspace.spec.tsTest suite for workspace detection
packages/cli/binding/tests/download-package-manager.spec.tsTest suite for package manager download
packages/cli/binding/tests/fixtures/*Test fixtures for pnpm-monorepo, npm-monorepo, and npm-project
packages/cli/binding/Cargo.tomlAdded vite_workspace dependency
Cargo.lockUpdated with new dependency

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

Comment threadpackages/cli/binding/src/package_manager.rs Outdated
Comment threadpackages/cli/binding/src/package_manager.rs Outdated
Comment threadcrates/vite_install/src/package_manager.rs
Comment threadcrates/vite_install/src/package_manager.rs
@fengmk2
fengmk2 merged commit f0bc839 into mainNov 21, 2025
9 of 12 checks passed
@fengmk2
fengmk2 deleted the 11-15-feat_export_download_package_manager_helper branch November 21, 2025 05:08
Sign up for freeto 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.

3 participants

@fengmk2@wan9chi