Crates.io | package_manager_detector_rs |
lib.rs | package_manager_detector_rs |
version | 0.2.5 |
source | src |
created_at | 2024-11-29 06:17:00.228842 |
updated_at | 2024-11-29 06:17:00.228842 |
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 | 30,208 |
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.
WIP
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"
// }
}
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::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.
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.
MIT License © 2024-PRESENT Muhammad Rahmahalim