Skip to main content

Command Palette

Search for a command to run...

[NPM 包管理] corepack 的使用

Published
•1 min read•View as Markdown
[NPM 包管理] corepack 的使用

简介

个人理解 corepack 是用于接管 npm 包管理器的工具。启用了 corepack ,就可以使用 corepack 来安装、启用、停用包管理器,而不需要 npm install -g

corepack 的本质是 -- 添加和删除 shims 。也就是说,在 corepack 中,开启和停用某个包管理器就相当于添加和删除一些二进制的脚本

使用

这里只介绍一些常用的命令,详情请参考文档:https://github.com/nodejs/corepack#corepack-use-nameversion

corepack enable [<package-manager-name>]

使用该命令可以开启某个包管理器 -- 为某个包管理器添加 shims。如果不指定包管理器的名称,那么默认就会添加所有的包管理器的 shims;shims 的目录在你当前版本的 node 的全局 bin 目录下

这个命令还可以指定 --install-directory 参数,可以将 shims 安装到指定的目录下

corepack disable [<package-manager-name>]

这个命令就是和上面反过来的,移除 shims ,并且同样可以指定 --install-directory 参数,删除指定目录下的 shims

但是!这个命令有一个很重量级的机制,当你一开始并没有使用 corepack 时,例如你使用 npm install -g 安装了包管理器,这些二进制文件就会存放到你当前版本的 node 的全局 bin 目录下。然后你引入了 corepack,但是你想关闭掉 corepack,于是你运行了 disable 命令,然后这个命令就会把你之前用 npm install -g 安装的包管理器的二进制文件也给删掉!!!太逆天了

这就是为什么我说 corepack 的本质就是添加和删除 shims,因为它这种做法就不只是 disable 了自己,而是直接一刀切把二进制文件给删除了,相当的粗暴

可以参考下这个 issue:https://github.com/nodejs/corepack/issues/112

这个 issue 里的这位老哥还写了一个 enhance 版的 corepack 脚本:

More from this blog

[Vite] 处理静态资源路径

静态资源路径的种类 从路径的格式上来说,vite 的静态资源路径有两种:相对路径 和 绝对路径 从路径的类型上来说,vite 的静态资源路径有两种:基于 http URL 的 和 基于文件系统的 相对路径 在 vite 文档的表述中,相对路径常用于在 “嵌入式” 的页面中使用: 这里的 “嵌入式” 指的是例如浏览器插件这种,将一个页面嵌入到一个网页中的形式 绝对路径 绝对路径指的是 “以根路径为起点” 而表示的路径 绝对路径在 “基于 http URL” 和 “基于文件系统” 的情况下,最终表...

Oct 2, 20251 min read

[Node] Mac m 芯片使用 node 14

最近在 m 芯片的 mac 电脑上使用 node 14 版本,遇到了芯片架构不兼容的错误,所以记录一下解决问题的过程 遇到的问题 原因是 node 14 版本只支持 x86_64 架构的芯片,所以使用 arm 架构的 m 芯片就会报错 解决方案 前置知识 在 m 芯片的 mac 上,node 16 及以上的版本全面支持了 arm 芯片架构;如果要安装 16 以下的版本,需要通过 Rosetta 2 转译执行 步骤 按照 nvm 官方的步骤进行:https://github.com/nvm-sh/...

Jul 11, 20251 min read
[Node] Mac m 芯片使用 node 14

[其他] WSL Interop

最近在 wsl 下使用 code <dir> 命令拉起 windows 下的 vscode 客户端时,遇到了错误,搜了一下发现是 wsl 和 windows 的互操作出现了问题 这篇文章就来记录一下遇到的问题和相关的知识点 WSLInterop.conf 文件 WSLInterop.conf 文件是 WSL(Windows Subsystem for Linux)中的一个关键配置文件,它定义了 Linux 系统如何识别和处理 Windows 可执行文件 文件位置和基本作用 这个文件通常位于 /u...

Jul 11, 20252 min read
[其他] WSL Interop

lordmoon's blog

25 posts