Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/oxwazz/package_manager_detector_rs
Detect the package manager in use by identifying the associated package.json or lockfile.
https://github.com/oxwazz/package_manager_detector_rs
bun deno npm pnpm yarn
Last synced: about 1 month ago
JSON representation
Detect the package manager in use by identifying the associated package.json or lockfile.
- Host: GitHub
- URL: https://github.com/oxwazz/package_manager_detector_rs
- Owner: oxwazz
- License: mit
- Created: 2024-11-20T07:02:47.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2024-11-28T07:12:36.000Z (about 1 month ago)
- Last Synced: 2024-11-28T07:27:01.027Z (about 1 month ago)
- Topics: bun, deno, npm, pnpm, yarn
- Language: Rust
- Homepage:
- Size: 52.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# package_manager_detector_rs
[//]: # ([![npm version][npm-version-src]][npm-version-href])
[//]: # ([![npm downloads][npm-downloads-src]][npm-downloads-href])
[//]: # ([![JSDocs][jsdocs-src]][jsdocs-href])
[//]: # ([![License][license-src]][license-href])
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
[//]: # (```sh)
[//]: # (# pnpm)
[//]: # (pnpm add package-manager-detector)
[//]: # ()
[//]: # (# npm)
[//]: # (npm i package-manager-detector)
[//]: # ()
[//]: # (# yarn)
[//]: # (yarn add package-manager-detector)
[//]: # (```)
## Usage
To check the file system for which package manager is used:
```rust
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
WIP
[//]: # (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.)
[//]: # ()
[//]: # (```ts)
[//]: # (import { resolve_command } from 'package-manager-detector/commands')
[//]: # (import { detect } from 'package-manager-detector/detect')
[//]: # ()
[//]: # (const pm = await detect())
[//]: # (if (!pm))
[//]: # ( throw new Error('Could not detect package manager'))
[//]: # ()
[//]: # (const { command, args } = resolve_command(pm.agent, 'add', ['@antfu/ni']) // { command: 'pnpm', args: ['add', '@antfu/ni'] })
[//]: # (console.log(`Detected the ${pm.agent} package manager. You can run a install with ${command} ${args.join(' ')}`))
[//]: # (```)
## Credit
package_manager_detector_rs is currently being developed and maintained
by [Muhammad Rahmahalim](https://github.com/oxwazz).
This project is
like [package-manager-detector](https://github.com/antfu-collective/package-manager-detector) ([Anthony Fu](https://github.com/antfu))
but in rust.## License
[MIT](./LICENSE) License © 2024-PRESENT [Muhammad Rahmahalim](https://github.com/oxwazz)
[//]: # ()
[//]: # ()
[//]: # ([npm-version-src]: https://img.shields.io/npm/v/package-manager-detector?style=flat&colorA=18181B&colorB=F0DB4F)
[//]: # ([npm-version-href]: https://npmjs.com/package/package-manager-detector)
[//]: # ([npm-downloads-src]: https://img.shields.io/npm/dm/package-manager-detector?style=flat&colorA=18181B&colorB=F0DB4F)
[//]: # ([npm-downloads-href]: https://npmjs.com/package/package-manager-detector)
[//]: # ([jsdocs-src]: https://img.shields.io/badge/jsdocs-reference-080f12?style=flat&colorA=18181B&colorB=F0DB4F)
[//]: # ([jsdocs-href]: https://www.jsdocs.io/package/package-manager-detector)
[//]: # ([license-src]: https://img.shields.io/github/license/antfu-collective/package-manager-detector.svg?style=flat&colorA=18181B&colorB=F0DB4F)
[//]: # ([license-href]: https://github.com/antfu-collective/package-manager-detector/blob/main/LICENSE)