package_manager_detector_rs

Crates.iopackage_manager_detector_rs
lib.rspackage_manager_detector_rs
version0.2.5
sourcesrc
created_at2024-11-29 06:17:00.228842
updated_at2024-11-29 06:17:00.228842
descriptionDetect the package manager in use by identifying the associated package.json or lockfile.
homepagehttps://github.com/oxwazz/package_manager_detector_rs
repositoryhttps://github.com/oxwazz/package_manager_detector_rs
max_upload_size
id1465242
size30,208
Muhammad Rahmahalim (oxwazz)

documentation

README

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 for npm and bun
  • 'execute' - download & execute binary scripts
  • 'execute-local' - execute binary scripts (from package locally installed)
  • 'run' - run package.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

Commit count: 28

cargo fmt