1 unstable release
0.2.5 | Nov 29, 2024 |
---|
#233 in Operating systems
129 downloads per month
21KB
306 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
WIP
Usage
To check the file system for which package manager is used:
use package_manager_detector_rs::detect::{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::commands::{resolve_command};
use package_manager_detector_rs::detect::{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 package-manager-detector (Anthony Fu)
but in rust.
License
MIT License © 2024-PRESENT Muhammad Rahmahalim
Dependencies
~5–15MB
~206K SLoC