乐闻世界logo
搜索文章和话题

How to make pnpm use symlinks for a global directory?

4 个月前提问
3 个月前修改
浏览次数56

1个答案

1

pnpm 是一个高效的包管理工具,它通过使用硬链接和符号链接(symlinks)在多个项目中共享相同的包版本来节省空间。当你使用 pnpm 安装包时,它会将包的内容存储在一个全局的存储位置,然后在你的项目的 node_modules 目录中创建符号链接到这些全局存储的内容。

当提到全局安装的包时,pnpm 也支持这个功能,但是它的工作方式和 npmyarn 有些不同。在 npmyarn 中,全局安装的包通常被放置在系统的某个全局位置,并且可执行文件的链接将被放置在系统的 PATH 中。而 pnpm 为了避免全局命令污染,使用一个独特的方法:它会将全局包安装到一个全局目录中,并且只有当你明确地希望将这些包的执行文件添加到 PATH 时,才会为它们创建符号链接。

以下是有关如何使用 pnpm 全局安装包和管理全局目录的符号链接的步骤:

全局安装包

  1. 全局安装一个包:

    shell
    pnpm add -g <package-name>

    这将安装 <package-name>pnpm 的全局存储目录,并在 pnpm 的全局 bin 目录中创建可执行文件的符号链接。

  2. 查看全局包位置: 要查看 pnpm 的全局包安装位置,可以运行:

    shell
    pnpm config get pnpmHome

    这将告诉你全局存储位置和全局 bin 目录的位置。

管理全局符号链接

  1. 查看全局安装的包:

    shell
    pnpm ls -g

    这会列出所有在全局安装的包。

  2. 添加全局 bin 到 PATH: 你需要将 pnpm 全局 bin 目录添加到你的 PATH 环境变量。这允许你在命令行中直接运行全局安装的包的可执行文件。如何添加取决于你的操作系统和 shell,但通常是在 .bashrc.zshrc.bash_profile.profile 文件中添加如下行:

    shell
    export PATH="$PATH:$(pnpm config get pnpmHome)/bin"

    然后重新加载你的 shell 配置文件,例如使用 source ~/.bashrc 命令。

  3. 删除全局包:

    shell
    pnpm remove -g <package-name>

    这将从全局存储中删除 <package-name> 包,并删除相应的符号链接。

通过这样的方式,pnpm 可以高效地管理全局命令和包,减少了存储用量并且使得版本管理变得更简单。

2024年6月29日 12:07 回复

你的答案