detect-package-manager
How does this work?
- When there's
yarn.lock
, package-lock.json
, pnpm-lock.yaml
, or bun.lockb
in current working directory, it will skip other operations and directly resolve yarn
, npm
, pnpm
, or bun
.
- When there's no lockfile found, it checks if
yarn
, pnpm
, or bun
command exists. If so, it resolves yarn
, pnpm
, or bun
otherwise npm
.
- Results are cached.
Install
yarn add detect-package-manager
Usage
const { detect } = require("detect-package-manager");
detect().then((pm) => {
console.log(pm);
//=> 'yarn', 'npm', or 'pnpm', 'bun'
});
API
detect([opts])
- Arguments:
opts.cwd
: string
Optional, defaults to .
, the directory to look up yarn.lock
, package-lock.json
, or pnpm-lock.yaml
.
opts.includeGlobalBun
: boolean
Optional, defaults to false
, whether to check if bun
exists in PATH.
- Returns:
Promise<PM>
It returns a Promise resolving the name of package manager, could be npm
, yarn
, or pnpm
, bun
.
getNpmVersion([pm])
- Arguments:
pm
: string
Optional, defaults to npm
, could be npm
, yarn
, or pnpm
, bun
- Returns:
Promise<string>
It returns a Promise resolving the version of npm or the package manager you specified.
clearCache()
Clear cache.
Contributing
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
Author
detect-package-manager © EGOIST, Released under the MIT License.
Authored and maintained by EGOIST with help from contributors (list).
github.com/egoist · GitHub @EGOIST · Twitter @_egoistlily