# package-manager-detector [![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.lock` / `bun.lockb` / `deno.lock` to know the current package manager and use the `packageManager` field in your `package.json` if present. ## Install ```sh # pnpm pnpm add package-manager-detector # npm npm i package-manager-detector # yarn yarn add package-manager-detector ``` ## Usage ### ESM To check the file system for which package manager is used: ```js import { detect } from 'package-manager-detector/detect' ``` or sync version: ```js import { detectSync } from 'package-manager-detector/detect' ``` or to get the currently running package manager: ```js import { getUserAgent } from 'package-manager-detector/detect' ``` ### CommonJS To check the file system for which package manager is used: ```js const { detect } = require('package-manager-detector/detect') ``` or sync version: ```js const { detectSync } = require('package-manager-detector/detect') ``` or to get the currently running package manager: ```js const { getUserAgent } = require('package-manager-detector/detect') ``` ## 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 `resolveCommand` function is provided to resolve the command for a specific agent. ```ts import { resolveCommand } 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 } = resolveCommand(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(' ')}`) ``` You can check the source code or the [JSDocs](https://www.jsdocs.io/package/package-manager-detector) for more information. ## License [MIT](./LICENSE) License © 2020-PRESENT [Anthony Fu](https://github.com/antfu) [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