| Crates.io | package_manager_detector_rs |
| lib.rs | package_manager_detector_rs |
| version | 0.2.7 |
| created_at | 2024-11-29 06:17:00.228842+00 |
| updated_at | 2024-12-16 04:47:31.384651+00 |
| description | Detect the package manager in use by identifying the associated package.json or lockfile. |
| homepage | https://github.com/oxwazz/package_manager_detector_rs |
| repository | https://github.com/oxwazz/package_manager_detector_rs |
| max_upload_size | |
| id | 1465242 |
| size | 32,873 |
Package manager detector is based on lock files and the packageManager field in the current project's package.json
file.
It will detect your yarn.lock / pnpm-lock.yaml / package-lock.json / bun.lockb / deno.lock to know the current
package manager and use the packageManager field in your package.json if present.
Run the following Cargo command in your project directory:
cargo add package_manager_detector_rs
Or add the following line to your Cargo.toml:
[dependencies]
package_manager_detector_rs = "0.2.5"
To check the file system for which package manager is used:
use package_manager_detector_rs::{detect};
fn main() {
let pm = detect();
if pm.is_none() {
println!("Could not detect package manager")
}
println!("{:?}", pm);
// HandlePackageManagerReturn {
// name: "yarn", agent: "yarn@berry", version: "berry"
// }
}
This package includes package manager agents and their corresponding commands for:
'agent' - run the package manager with no arguments'install' - install dependencies'frozen' - install dependencies using frozen lockfile'add' - add dependencies'uninstall' - remove dependencies'global' - install global packages'global_uninstall' - remove global packages'upgrade' - upgrade dependencies'upgrade-interactive' - upgrade dependencies interactively: not available for npm and bun'execute' - download & execute binary scripts'execute-local' - execute binary scripts (from package locally installed)'run' - run package.json scriptsA resolve_command function is provided to resolve the command for a specific agent.
use package_manager_detector_rs::{resolve_command, detect};
fn main() {
let pm = detect();
if pm.is_none() {
println!("Could not detect package manager")
}
println!("{:?}", pm);
// HandlePackageManagerReturn {
// name: "yarn", agent: "yarn@berry", version: "berry"
// }
let agent = pm.unwrap().agent;
let get_command = resolve_command(&agent, "add", vec!["@antfu/ni"]);
let get_command = get_command.unwrap();
println!("Detected the {} package manager. You can run a install with {} {}", &agent, get_command.command, get_command.args.join(" "))
// Detected the yarn@berry package manager. You can run a install with yarn add @antfu/ni
}
You can check the source code for more information.
package_manager_detector_rs is currently being developed and maintained
by Muhammad Rahmahalim.
This project is
like antfu-collective/package-manager-detector but in
rust.
MIT License © 2024-PRESENT Muhammad Rahmahalim