antfu-collective / package-manager-detector

Package manager detector
MIT License
36 stars 4 forks source link

package-manager-detector

npm version npm downloads JSDocs License

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.

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:

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']) // { 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.

License

MIT License © 2020-PRESENT Anthony Fu