shamefully-hoist = true

本文解释了pnpm中的shamefully-hoist配置选项,它如何影响磁盘空间和依赖管理。该选项用于在pnpm中模仿传统包管理器的行为,可能导致空间损失和新依赖问题。建议谨慎使用并优化项目结构以利用pnpm的优势。
摘要由CSDN通过智能技术生成

在根目录下创建npm的配置文件.npmrc,增加配置项

shamefully-hoist = true 是一个在 pnpm(一个快速的、磁盘效率高的包管理器)中使用的配置选项。pnpm 的主要特点之一是它使用硬链接和符号链接来避免复制相同的包到每个项目的 node_modules 文件夹中,从而节省了大量的磁盘空间。然而,这种做法有时可能会与某些期望每个项目的 node_modules 文件夹都包含所有依赖的工具或脚本产生冲突。

当 shamefully-hoist 设置为 true 时,pnpm 会尝试模仿传统的 npm 和 yarn 行为,将所有依赖项都安装在项目的根 node_modules 文件夹中,而不是将它们分散到各个子文件夹中。这通常是为了解决某些与路径解析或特定工具集成相关的问题。

然而,需要注意的是,使用 shamefully-hoist 可能会失去 pnpm 的主要优势之一,即节省磁盘空间。此外,它还可能引入新的依赖解析问题,因为所有的包现在都位于同一级别,而不是它们各自的作用域中。

如果你想在 .pnpm-store 配置中启用 shamefully-hoist,你需要确保你在正确的位置进行设置。.pnpm-store 通常是 pnpm 用于存储已下载包的全局缓存的目录,而不是用于配置 pnpm 行为的地方。

通常,你可以在项目的 .npmrc 文件(位于项目根目录)或用户的主目录中的 .npmrc 文件中设置 shamefully-hoist。你也可以在运行 pnpm 命令时通过环境变量或命令行参数来设置它。

例如,在命令行中:

pnpm install --shamefully-hoist

或者在 .npmrc 文件中:


shamefully-hoist = true

但是,请记住,尽管 shamefully-hoist 可以解决某些问题,但它也可能引入新的问题,因此在使用它之前应该仔细考虑。如果可能的话,最好尝试找出导致你需要使用它的根本原因,并寻找其他解决方案。

在 pnpm 中,通常不会直接出现“幽灵依赖”这样的术语,但“幽灵依赖”通常指的是那些在项目代码中隐式依赖但并未在 package.json 文件中明确声明的依赖。然而,当你说“把所有依赖都提升到根目录”时,这实际上与 pnpm 的默认行为不符,因为 pnpm 默认就是使用内容可寻址的存储(Content-Addressable Storage, CAS)来管理依赖,而不是将它们都放在项目的根 node_modules 目录下。

但是,为了兼容某些工具或解决特定问题,pnpm 提供了 shamefully-hoist 配置选项。当这个选项被设置为 true 时,pnpm 会尝试模仿传统的 npm 或 yarn 的行为,即将所有依赖都安装在项目的根 node_modules 目录下,而不是将它们分散到各个子文件夹中。

这里是如何在 pnpm 中设置 shamefully-hoist 的:

  1. 在命令行中
    你可以在安装时直接指定这个选项:

     

    bash复制代码

    pnpm install --shamefully-hoist

    但是,请注意,这只会在这次安装时生效。

  2. 在 .npmrc 文件中
    你可以在项目根目录下的 .npmrc 文件中设置这个选项,这样它就会一直生效:

     

    复制代码

    shamefully-hoist = true

然而,需要强调的是,虽然 shamefully-hoist 可以解决某些与路径或特定工具集成相关的问题,但它也会失去 pnpm 的主要优势之一,即节省磁盘空间。同时,这也可能引入新的依赖解析问题,因为所有的包现在都位于同一级别,而不是它们各自的作用域中。

如果你发现自己经常需要使用 shamefully-hoist,那么可能需要重新考虑你的项目结构或依赖管理方式,以更好地利用 pnpm 的优势。同时,确保你的项目没有“幽灵依赖”也是一个好习惯,这可以通过检查项目代码和确保所有依赖都在 package.json 中明确声明来实现。

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向画

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值