nodejs/corepack
nodejs/corepack is a Backend project on GitHub, written primarily in TypeScript. It has 3.8k stars. Package manager version manager for Node.js projects
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
Snapshot
Top contributors
Show top contributors
corepack
Corepack is a zero-runtime-dependency Node.js script that acts as a bridge between Node.js projects and the package managers they are intended to be used with during development. In practical terms, Corepack lets you use Yarn, npm, and pnpm without having to install them.
How to Install
Default Installs
Corepack is distributed with Node.js from version 14.19.0 up to (but not including) 25.0.0.
Run corepack enable to install the required Yarn and pnpm binaries on your path.
Manual Installs
Install Corepack using npm
First uninstall your global Yarn and pnpm binaries (just leave npm). In general, you'd do this by running the following command:
npm uninstall -g yarn pnpm
# That should be enough, but if you installed Yarn without going through npm it might
# be more tedious - for example, you might need to run `brew uninstall yarn` as well.
Then install Corepack:
npm install -g corepack
We do acknowledge the irony and overhead of using npm to install Corepack, which is at least part of why the preferred option is to use the Corepack version that is distributed along with Node.js itself.
Update Corepack using npm
To install the latest version of Corepack, use:
npm install -g corepack@latest
If Corepack was installed on your system using a Node.js Windows Installer
.msi package then you might need to remove it before attempting to install a
different version of Corepack using npm. You can select the Modify option of the
Node.js app settings to access the Windows Installer feature selection, and on
the "corepack manager" feature of the Node.js .msi package by selecting
"Entire feature will be unavailable". See
Repair apps and programs in Windows
for instructions on accessing the Windows apps page to modify settings.
Install Corepack from source
See CONTRIBUTING.md.
Usage
When Building Packages
Just use your package managers as you usually would. Run yarn install in Yarn
projects, pnpm install in pnpm projects, and npm in npm projects. Corepack
will catch these calls, and depending on the situation:
-
If the local project is configured for the package manager you're using, Corepack will download and cache the latest compatible version.
-
If the local project is configured for a different package manager, Corepack will request you to run the command again using the right package manager - thus avoiding corruptions of your install artifacts.
-
If the local project isn't configured for any package manager, Corepack will assume that you know what you're doing, and will use whatever package manager version has been pinned as "known good release". Check the relevant section for more details.
When Authoring Packages
Set your package's manager with the packageManager field in package.json:
{
"packageManager": "[email protected]+sha224.953c8233f7a92884eee2de69a1b92d1f2ec1655e66d08071ba9a02fa"
}
Here, yarn is the name of the package manager, specified at version 3.2.3,
along with the SHA-224 hash of this version for validation.
[email protected] is required. The hash is optional but strongly
recommended as a security practice. Permitted values for the package manager are
yarn, npm, and pnpm.
You can also provide a URL to a .js file (which will be interpreted as a
CommonJS module) or a .tgz file (which will be interpreted as a package, and
the "bin" field of the package.json will be used to determine which file to
use in the archive).
{
"packageManager": "yarn@https://registry.npmjs.org/@yarnpkg/cli-dist/-/cli-dist-3.2.3.tgz#sha224.16a0797d1710d1fb7ec40ab5c3801b68370a612a9b66ba117ad9924b"
}
devEngines.packageManager
When a devEngines.packageManager field is defined, and is an object containing
a "name" field (can also optionally contain version and onFail fields),
Corepack will use it to validate you're using a compatible package manager.
Depending on the value of devEngines.packageManager.onFail:
- if set to
ignore, Corepack won't print any warning or error. - if unset or set to
error, Corepack will throw an error in case of a mismatch. - if set to
warnor some other value, Corepack will print a warning in case of mismatch.
If the top-level packageManager field is missing, Corepack will use the
package manager defined in devEngines.packageManager. You should provide a
specific version in devEngines.packageManager.version, ideally with a hash, as
explained in the previous section:
{
"devEngines":{
"packageManager": {
"name": "yarn",
"version": "3.2.3+sha224.953c8233f7a92884eee2de69a1b92d1f2ec1655e66d08071ba9a02fa"
}
}
}
When devEngines.packageManager.version is a range rather than a specific
version, Corepack resolves it the same way as when a range is given on the
command line: the latest version matching the range is looked up on the npm
registry, which means the resolution requires network access (or a cache
containing a matching version, see Offline Workflow), and
may change over time. Set COREPACK_ENABLE_AUTO_PIN=1 to have Corepack add the
resolved version to the packageManager field. When
devEngines.packageManager.version is missing, Corepack falls back to its
Known Good Release for that package manager.
Known Good Releases
When running Corepack within projects that don't list a supported package manager, it will default to a set of Known Good Releases.
If there is no Known Good Release for the requested package manager, Corepack looks up the npm registry for the latest available version and cache it for future use.
The Known Good Releases can be updated system-wide using corepack install -g.
When Corepack downloads a new version of a given package manager on the same
major line as the Known Good Release, it auto-updates it by default.
Offline Workflow
The utility commands detailed in the next section.
-
Either you can use the network while building your container image, in which case you'll simply run
corepack packto make sure that your image includes the Last Known Good release for the specified package manager. -
Or you're publishing your project to a system where the network is unavailable, in which case you'll preemptively generate a package manager archive from your local computer (using
corepack pack -o) before storing it somewhere your container will be able to access (for example within your repository). After that it'll just be a matter of runningcorepack install -g --cache-only <path/to/corepack.tgz>to setup the cache.
Utility Commands
corepack <binary name>[@<version>] [... args]
This meta-command runs the specified package manager in the local folder. You can use it to force an install to run with a given version, which can be useful when looking for regressions.
Note that those commands still check whether the local project is configured for
the given package manager (ie you won't be able to run corepack yarn install
on a project where the packageManager field references pnpm).
corepack cache clean
Clears the local COREPACK_HOME cache directory.
corepack cache clear
Clears the local COREPACK_HOME cache directory.
corepack enable [... name]
| Option | Description |
|---|---|
--install-directory | Add the shims to the specified location |
This command will detect where Corepack is installed and will create shims next to it for each of the specified package managers (or all of them if the command is called without parameters). Note that the npm shims will not be installed unless explicitly requested, as npm is currently distributed with Node.js through other means.
If the file system where the corepack binary is located is read-only, this
command will fail. A workaround is to add the binaries as alias in your
shell configuration file (e.g. in ~/.bash_aliases):
alias yarn="corepack yarn"
alias yarnpkg="corepack yarnpkg"
alias pnpm="corepack pnpm"
alias pnpx="corepack pnpx"
alias npm="corepack npm"
alias npx="corepack npx"
On Windows PowerShell, you can add functions using the $PROFILE automatic
variable:
echo 'function yarn { corepack yarn @args }' >> $PROFILE
echo 'function yarnpkg { corepack yarnpkg @args }' >> $PROFILE
echo 'function pnpm { corepack pnpm @args }' >> $PROFILE
echo 'function pnpx { corepack pnpx @args }' >> $PROFILE
echo 'function npm { corepack npm @args }' >> $PROFILE
echo 'function npx { corepack npx @args }' >> $PROFILE
corepack disable [... name]
| Option | Description |
|---|---|
--install-directory | Remove the shims to the specified location |
This command will detect where Node.js is installed and will remove the shims from there.
corepack install
Download and install the package manager configured in the local project. This command doesn't change the global version used when running the package manager from outside the project (use the `-g,--global` flag if you wish to do this).
corepack install <-g,--global> [... name[@<version>]]
Install the selected package managers and install them on the system.
Package managers thus installed will be configured as the new default when
calling their respective binaries outside of projects defining the
packageManager field.
corepack pack [... name[@<version>]]
| Option | Description |
|---|---|
--json | Print the output folder rather than logs |
-o,--output | Path where to generate the archive |
Download the selected package managers and store them inside a tarball
suitable for use with corepack install -g.
corepack use <name[@<version>]>
When run, this command will retrieve the latest release matching the provided descriptor, assign it to the project's package.json file, and automatically perform an install.
corepack up
Retrieve the latest available version for the current major release line of the package manager used in the local project, and update the project to use it.
Unlike corepack use this command doesn't take a package manager name nor a
version range, as it will always select the latest available version from the
range specified in devEngines.packageManager.version, or fallback to the
same major line. Should you need to upgrade to a new major, use an explicit
corepack use {name}@latest call (or simply corepack use {name}).
Environment Variables
-
COREPACK_DEFAULT_TO_LATESTcan be set to0in order to instruct Corepack not to lookup on the remote registry for the latest version of the selected package manager, and to not update the Last Known Good version when it downloads a new version of the same major line. -
COREPACK_ENABLE_AUTO_PINcan be set to1to instruct Corepack to update thepackageManagerfield when it detects that the local package doesn't list it. In general we recommend to always list apackageManagerfield (which you can easily set throughcorepack use [name]@[version]), as it ensures that your project installs are always deterministic. -
COREPACK_ENABLE_DOWNLOAD_PROMPTcan be set to0to prevent Corepack showing the URL when it needs to download software, or can be set to1to have the URL shown. By default, when Corepack is called explicitly (e.g.corepack pnpm …), it is set to0; when Corepack is called implicitly (e.g.pnpm …), it is set to1. The default value cannot be overridden in a.corepack.envfile. When standard input is a TTY and no CI environment is detected, Corepack will ask for user input before starting the download. -
COREPACK_ENABLE_UNSAFE_CUSTOM_URLScan be set to1to allow use of custom URLs to load a package manager known by Corepack (yarn,npm, andpnpm). -
COREPACK_ENABLE_NETWORKcan be set to0to prevent Corepack from accessing the network (in which case you'll be responsible for hydrating the package manager versions that will be required for the projects you'll run, usingcorepack install -g --cache-only). -
COREPACK_ENABLE_STRICTcan be set to0to prevent Corepack from throwing error if the package manager does not correspond to the one defined for the current project. This means that if a user is using the package manager specified in the current project, it will use the version specified by the project'spackageManagerfield. But if the user is using other package manager different from the one specified for the current project, it will use the system-wide package manager version. -
COREPACK_ENABLE_PROJECT_SPECcan be set to0to prevent Corepack from checking if the package manager corresponds to the one defined for the current project. This means that it will always use the system-wide package manager regardless of what is being specified in the project'spackageManagerfield. -
COREPACK_ENV_FILEcan be set to0to request Corepack to not attempt to load.corepack.env; it can be set to a path to specify a different env file. Only keys that start withCOREPACK_and are not in the exception list (COREPACK_ENABLE_DOWNLOAD_PROMPTandCOREPACK_ENV_FILEare ignored) will be taken into account. -
COREPACK_HOMEcan be set in order to define where Corepack should install the package managers. By default it is set to%LOCALAPPDATA%\node\corepackon Windows, and to$HOME/.cache/node/corepackeverywhere else. -
COREPACK_ROOThas no functional impact on Corepack itself; it's automatically being set in your environment by Corepack when it shells out to the underlying package managers, so that they can feature-detect its presence (useful for commands likeyarn init). -
COREPACK_NPM_REGISTRYsets the registry base url used when retrieving package managers from npm. Default value ishttps://registry.npmjs.org -
COREPACK_NPM_TOKENsets a Bearer token authorization header when connecting to a npm type registry. -
COREPACK_NPM_USERNAMEandCOREPACK_NPM_PASSWORDto set a Basic authorization header when connecting to a npm type registry. Note that both environment variables are required and as plain text. If you want to send an empty password, explicitly setCOREPACK_NPM_PASSWORDto an empty string. -
COREPACK_ON_UNVERIFIED_DOWNLOADcan be set to:warn(case insensitive): attempting to download an unsigned version without providing a hash will emit a warning to stderr.error(case insensitive): attempting to download an unsigned version without providing a hash will fail with an error, and nothing gets downloaded.strict-warn(case insensitive): same aswarn, and additionally emits a warning when downloading a version that is not pinned by a hash, even when its signature can be verified.strict-error(case insensitive): same aserror, and additionally fails when downloading a version that is not pinned by a hash, even when its signature can be verified.ignore(or any other unsupported value): disables that security feature.
-
HTTP_PROXY,HTTPS_PROXY, andNO_PROXYare supported throughNODE_USE_ENV_PROXY=1. -
COREPACK_INTEGRITY_KEYScan be set to an empty string or0to instruct Corepack to skip integrity checks, or to a JSON string containing custom keys.
Troubleshooting
The environment variable DEBUG can be set to corepack to enable additional debug logging.
Networking
There are a wide variety of networking issues that can occur while running
corepack commands. Things to check:
- Make sure your network connection is active.
- Make sure the host for your request can be resolved by your DNS; try using
curl [URL](ipv4) andcurl -6 [URL](ipv6) from your shell. - Check your proxy settings (see Environment Variables).
Contributing
See CONTRIBUTING.md.
License (MIT)
See LICENSE.md.
Related repositories
Node.js Best Practices, maintained at goldbergyoni/nodebestpractices, is a curated checklist of more than 80 recommendations for building Node.js applications, organized into eight categories from project architecture to Docker. Each entry combines a short recommendation with an explanation of the risk of skipping it and a link to a deeper write-up, rather than being a plain list of links.
NestJS is an open-source Node.js framework at nestjs/nest, written primarily in TypeScript while preserving compatibility with plain JavaScript. Its README frames it as an architecture-first alternative to hand-assembling Express or Fastify, blending object-oriented, functional, and functional-reactive patterns into an Angular-inspired structure. The GitHub description bills it as aimed at server-side software that's efficient, scales, and holds up at enterprise scale, and the repo carries strong community support in the facts provided here.
Express.js is a web framework for Node.js maintained under the expressjs GitHub organization, originally authored by TJ Holowaychuk. The README describes it as fast, unopinionated, and minimalist: it adds routing, middleware support, and HTTP helpers directly on top of Node's HTTP module without forcing a particular ORM or template engine.
A hand-picked, single-file directory of Node.js packages and resources maintained by sindresorhus, split into categories like HTTP, logging, CLI tooling, and web frameworks, released under CC0-1.0.
Quick answers
Does nodejs/corepack have a project website?
No homepage URL was recorded for nodejs/corepack in TopGit's last sync. The README tab above frequently contains screenshots and demo links, or check the repository description on GitHub.
How does nodejs/corepack compare to other Backend projects?
nodejs/corepack is tracked by TopGit in the Backend category, with 3.8k GitHub stars and written in TypeScript. Browse the Backend topic page on TopGit to compare it against similar projects by stars and activity.
How many stars does nodejs/corepack have?
nodejs/corepack has 3.8k GitHub stars — refresh the page for the live number, or check github.com/nodejs/corepack. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
Is nodejs/corepack open source?
Yes — nodejs/corepack ships under the MIT license, which makes its source code freely readable (and, depending on license terms, forkable and reusable). Source: github.com/nodejs/corepack.
What else is in the Backend space?
nodejs/corepack is tracked by TopGit under the Backend category, alongside 4 GitHub-tagged topics. Trending and Topics pages list peer repositories of comparable stars and language.
What is nodejs/corepack?
nodejs/corepack (nodejs/corepack) is a TypeScript project on GitHub. From the project's own README: Package manager version manager for Node.js projects
Where do I read more about nodejs/corepack?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/nodejs/corepack is the definitive source.
Read full README in the tab above.
Curious whether corepack is right for you?
Let ChatGPT, Claude, or Perplexity look into it — click below and see what AI actually says about corepack.