https://github.com/nodejs/corepack
Zero-runtime-dependency package acting as bridge between Node projects and their package managers
包管理器的管理器
In practical terms, Corepack lets you use Yarn, npm, and pnpm without having to install them.
Corepack is distributed by default with all recent Node.js versions. 我这边看新的 14、16 都是有的
corepack enable
JSON{ "packageManager": "yarn@3.2.3+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. packageManager@x.y.z is required. The hash is optional but strongly recommended as a security practice. Permitted values for the package manager are yarn, npm, and pnpm.
packageManager@x.y.z 是必须的,后面的 hash 是可选的
新建个项目
JSON{ "name": "corepack", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" }
在 package.json 所在路径执行pnpm --version
Zsh➜ pnpm --version 8.6.11
添加 "packageManager": "pnpm@7.1.1",
JSON{ "name": "corepack", "version": "1.0.0", "description": "", "packageManager": "pnpm@7.1.1", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" }
Zshworkspace/repositories/corepack is 📦 v1.0.0 via ⬢ v16.20.0 ➜ pnpm --version 7.1.1
注意到我这里已经自动换成了项目规定的 packageManager
如果尝试使用 yarn 呢?
Zsh➜ yarn Usage Error: This project is configured to use pnpm $ yarn ...
但是 npm 还没拦,可以用