赞
踩
pnpm - 速度快、节省磁盘空间的 node 软件包管理器
当使用 npm 时,如果你有 100 个项目,并且所有项目都有一个相同的依赖包,那么, 你在硬盘上就需要保存 100 份该相同依赖包的副本。然而,如果是使用 pnpm,依赖包将被 存放在一个统一的位置,因此:
pnpm update
只需要添加一个 新文件到存储中,而不会因为一个文件的修改而保存依赖包的 所有文件。最终结果就是以项目和依赖包的比例来看,你节省了大量的硬盘空间, 并且安装速度也大大提高了!
pnpm 分三个阶段进行安装:
与传统的解析、获取和将所有依赖关系写入 node_modules 的三阶段安装过程相比,这种方法要快得多。
当使用 npm 或 Yarn Classic 安装依赖包时,所有软件包都将被提升到 node_modules 的 根目录下。其结果是,源码可以访问 本不属于当前项目所设定的依赖包。
默认情况下,pnpm 则是通过使用符号链接的方式仅将项目的直接依赖项添加到 node_modules
的根目录下。
安装详见:https://www.pnpm.cn/installation, 卸载:https://www.pnpm.cn/uninstall
提供了 pnpm CLI 的两个包: pnpm
和 @pnpm/exe
.
npm install -g pnpm
或
npm install -g @pnpm/exe
如果你已经安装了 Homebrew 软件包管理器,则可以使用如下命令赖安装 pnpm:
brew install pnpm
与 npm 不同,pnpm 会验证所有参数。例如,pnpm install --target_arch x64
将运行 失败,由于 --target_arch
不是一个有效的 pnpm install
参数。
但是,某些依赖项可能会使用以 npm_config_
开头的环境变量,该环境变量 是可以通过 CLI 参数添加的。在这种情况下,假定有如下参数:
npm_config_target_arch=x64 pnpm install
--config.
前缀强制设置参数:pnpm install --config.target_arch=x64
将 <path>
设置为 pnpm 的运行目录,而不是当前目录。
Run as if pnpm was started in the root of the workspace instead of the current working directory.
有关更多信息,请参见各个 CLI 命令的文档。以下 是一个与 npm 等价命令的对照表,帮助你快速入门:
npm 命令 | pnpm 等价命令 |
---|---|
npm install | pnpm install |
npm i <pkg> | pnpm add |
npm run <cmd> | pnpm |
当你使用一个未知命令时,pnpm 将会查找和该命令具有相同名称的脚本, 因此,pnpm run lint
和 pnpm lint
是一样的。如果没有相同名称的脚本的话, 那么 pnpm 将按照 shell 脚本的形式执行该命令,所以你可以执行类似 pnpm eslint
(see pnpm exec) 指令的命令。
一些与 pnpm 无关的环境变量可能会改变 pnpm 的行为:
这些环境变量可能会影响 pnpm 用来存储全局信息的目录:
XDG_CACHE_HOME
XDG_CONFIG_HOME
XDG_DATA_HOME
XDG_STATE_HOME
你可以搜索文档,找到利用这些环境变量的设置。
pnpm 使用的是 npm 的配置 格式。因此,你应该以 npm 相同的方式来对其进行配置。例如,
pnpm config set store-dir /path/to/.pnpm-store
如果未配置任何存储,则 pnpm 将在同一硬盘上自动创建一个存储。 如果你需要 pnpm 能够跨多个硬盘或文件系统工作, 请阅读 FAQ。
此外,载安装依赖项时,pnpm 与 npm 使用相同的配置。 如果你为 npm 配置了一个私有的软件包注册表, pnpm 也能够获得授权请求,并且无需任何额外的 配置。
除了这些参数外,pnpm 还允许你将所有标记(flags)作为参数使用 (例如,--filter
或 --workspace-concurrency
):
workspace-concurrency = 1
filter = @my-scope/*
如需了解更多信息,请参考e config
命令。
2024-04-23(二)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。