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
to know the current package manager and use the packageManager
field in your package.json
if present.
# pnpm
pnpm add package-manager-detector
# npm
npm i package-manager-detector
# yarn
yarn add package-manager-detector
To check the file system for which package manager is used:
import { detect } from 'package-manager-detector/detect'
or sync version:
import { detectSync } from 'package-manager-detector/detect'
or to get the currently running package manager:
import { getUserAgent } from 'package-manager-detector/detect'
To check the file system for which package manager is used:
const { detect } = require('package-manager-detector/detect')
or sync version:
const { detectSync } = require('package-manager-detector/detect')
or to get the currently running package manager:
const { getUserAgent } = require('package-manager-detector/detect')
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 resolveCommand
function is provided to resolve the command for a specific agent.
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']) // { cli: '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 for more information.
MIT License © 2020-PRESENT Anthony Fu