3 releases
| 0.2.7 | Dec 16, 2024 |
|---|---|
| 0.2.6 | Dec 16, 2024 |
| 0.2.5 | Nov 29, 2024 |
#275 in Operating systems
74 downloads per month
28KB
499 lines
package_manager_detector_rs
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.
Install
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"
Usage
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"
// }
}
Agents and Commands
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 fornpmandbun'execute'- download & execute binary scripts'execute-local'- execute binary scripts (from package locally installed)'run'- runpackage.jsonscripts
Using Agents and Commands
A 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.
Credit
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.
License
MIT License © 2024-PRESENT Muhammad Rahmahalim
Dependencies
~5–11MB
~233K SLoC