|
2 | 2 |
|
3 | 3 | Corepack is a zero-runtime-dependency Node.js script that acts as a bridge |
4 | 4 | between Node.js projects and the package managers they are intended to be used |
5 | | -with during development. In practical terms, **Corepack will let you use Yarn |
6 | | -and pnpm without having to install them** - just like what currently happens |
7 | | -with npm, which is shipped by Node.js by default. |
8 | | - |
9 | | -**Important:** At the moment, Corepack only covers Yarn and pnpm. Given that we |
10 | | -have little control on the npm project, we prefer to focus on the Yarn and pnpm |
11 | | -use cases. As a result, Corepack doesn't have any effect at all on the way you |
12 | | -use npm. |
| 5 | +with during development. In practical terms, **Corepack lets you use Yarn, npm, |
| 6 | +and pnpm without having to install them**. |
13 | 7 |
|
14 | 8 | ## How to Install |
15 | 9 |
|
16 | 10 | ### Default Installs |
17 | 11 |
|
18 | | -Corepack is distributed by default with Node.js 14.19.0 and 16.9.0, but is |
19 | | -opt-in for the time being. Run `corepack enable` to install the required shims. |
| 12 | +Corepack is [distributed by default with all recent Node.js versions](https://nodejs.org/api/corepack.html). |
| 13 | +Run `corepack enable` to install the required Yarn and pnpm binaries on your path. |
20 | 14 |
|
21 | 15 | ### Manual Installs |
22 | 16 |
|
23 | 17 | <details> |
24 | | -<summary>Click here to see how to install Corepack using npm</summary> |
| 18 | +<summary>Install Corepack using npm</summary> |
25 | 19 |
|
26 | 20 | First uninstall your global Yarn and pnpm binaries (just leave npm). In general, |
27 | 21 | you'd do this by running the following command: |
@@ -45,6 +39,12 @@ is distributed along with Node.js itself. |
45 | 39 |
|
46 | 40 | </details> |
47 | 41 |
|
| 42 | +<details><summary>Install Corepack from source</summary> |
| 43 | + |
| 44 | +See [`CONTRIBUTING.md`](./CONTRIBUTING.md). |
| 45 | + |
| 46 | +</details> |
| 47 | + |
48 | 48 | ## Usage |
49 | 49 |
|
50 | 50 | ### When Building Packages |
@@ -131,12 +131,37 @@ on a project where the `packageManager` field references `pnpm`). |
131 | 131 | | --------------------- | --------------------------------------- | |
132 | 132 | | `--install-directory` | Add the shims to the specified location | |
133 | 133 |
|
134 | | -This command will detect where Node.js is installed and will create shims next |
| 134 | +This command will detect where Corepack is installed and will create shims next |
135 | 135 | to it for each of the specified package managers (or all of them if the command |
136 | 136 | is called without parameters). Note that the npm shims will not be installed |
137 | 137 | unless explicitly requested, as npm is currently distributed with Node.js |
138 | 138 | through other means. |
139 | 139 |
|
| 140 | +If the file system where the `corepack` binary is located is read-only, this |
| 141 | +command will fail. A workaround is to add the binaries as alias in your |
| 142 | +shell configuration file (e.g. in `~/.bash_aliases`): |
| 143 | + |
| 144 | +```sh |
| 145 | +alias yarn="corepack yarn" |
| 146 | +alias yarnpkg="corepack yarnpkg" |
| 147 | +alias pnpm="corepack pnpm" |
| 148 | +alias pnpx="corepack pnpx" |
| 149 | +alias npm="corepack npm" |
| 150 | +alias npx="corepack npx" |
| 151 | +``` |
| 152 | + |
| 153 | +On Windows PowerShell, you can add functions using the `$PROFILE` automatic |
| 154 | +variable: |
| 155 | + |
| 156 | +```powershell |
| 157 | +echo "function yarn { corepack yarn `$args }" >> $PROFILE |
| 158 | +echo "function yarnpkg { corepack yarnpkg `$args }" >> $PROFILE |
| 159 | +echo "function pnpm { corepack pnpm `$args }" >> $PROFILE |
| 160 | +echo "function pnpx { corepack pnpx `$args }" >> $PROFILE |
| 161 | +echo "function npm { corepack npm `$args }" >> $PROFILE |
| 162 | +echo "function npx { corepack npx `$args }" >> $PROFILE |
| 163 | +``` |
| 164 | + |
140 | 165 | ### `corepack disable [... name]` |
141 | 166 |
|
142 | 167 | | Option | Description | |
@@ -217,6 +242,16 @@ network interaction. |
217 | 242 | - `HTTP_PROXY`, `HTTPS_PROXY`, and `NO_PROXY` are supported through |
218 | 243 | [`node-proxy-agent`](https://github.com/TooTallNate/node-proxy-agent). |
219 | 244 |
|
| 245 | +## Troubleshooting |
| 246 | + |
| 247 | +### Networking |
| 248 | + |
| 249 | +There are a wide variety of networking issues that can occur while running `corepack` commands. Things to check: |
| 250 | + |
| 251 | +- Make sure your network connection is active. |
| 252 | +- Make sure the host for your request can be resolved by your DNS; try using `curl [URL]` from your shell. |
| 253 | +- Check your proxy settings (see [Environment Variables](#environment-variables)). |
| 254 | + |
220 | 255 | ## Contributing |
221 | 256 |
|
222 | 257 | See [`CONTRIBUTING.md`](./CONTRIBUTING.md). |
|