3 releases
0.2.7 | Dec 16, 2024 |
---|---|
0.2.6 | Dec 16, 2024 |
0.2.5 | Nov 29, 2024 |
#212 in Operating systems
275 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 fornpm
andbun
'execute'
- download & execute binary scripts'execute-local'
- execute binary scripts (from package locally installed)'run'
- runpackage.json
scripts
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–15MB
~216K SLoC