package-manager-detector
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
# 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:
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'
CommonJS
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')
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 fornpmandbun'execute'- download & execute binary scripts'execute-local'- execute binary scripts (from package locally installed)'run'- runpackage.jsonscripts
Using Agents and Commands
A 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']) // { 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 for more information.
License
MIT License © 2020-PRESENT Anthony Fu