shamefully-hoist = true

embedded/2024/11/13 9:04:16/

在根目录下创建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 中明确声明来实现。


http://www.ppmy.cn/embedded/34553.html

相关文章

数据结构===树

文章目录 概要概念相关概念 有哪些常用的树小结 概要 树是一种新的数据结构,不同于数组,链表。就像大自然中的树,看下这个数据结构,很有意思,有一个主干,然后还有很多树叉,即支干。不错&#xf…

uniapp 应用闪退、崩溃异常日志捕获插件(可对接网络上报)插件 Ba-Crash

应用闪退、崩溃异常日志捕获插件(可对接网络上报) Ba-Crash 简介(下载地址) Ba-Crash 是一款uniapp应用闪退、崩溃异常日志捕获插件,支持对接网络上报、设置提示等等,方便对一些远程问题、原生问题进行分…

影响外汇交易盈利的因素有哪些?

外汇交易就是通过汇率的差价来赚取相应的利润。在外汇交易中,投资者是否可以盈利,主要取决于是否正确的判断了市场趋势和行情。投资者在交易过程中受到主观和客观的因素影响,具体包含这些内容。 影响外汇交易盈利的因素有哪些? 1、…

老阳:跨境选品师怎么做更容易赚钱?

在跨境电商日益繁荣的今天,跨境选品师作为供应链上的重要一环,其职责与收入也备受关注。如何成为一名优秀的跨境选品师,并在这一岗位上赚得更多呢?以下是一些建议。 一、精准把握市场趋势 跨境选品师需要具备敏锐的市场洞察力,能…

富格林:了解黑幕套路正规方法预防

富格林悉知,存于市场中的黑幕亏损,不仅扰乱市场秩序,还使得不少的投资者受害亏损,面对诱导黑幕陷阱,一定要注意采取正规的方法防范避免受害亏损。投资者在进入市场之前,可从黑幕案件中了解黑幕亏损原因&…

AutoGroup是一种推荐场景的自动特征交互建模算法 采用了高效的分组算法 基于机器学习的选项,通过训练模型进行智能划分,确保结果的合理性。

AutoGroup AutoGroup是一种推荐场景的自动特征交互建模算法,其核心功能是基于预定义的规则或机器学习模型,自动将输入数据集分成多个组。这种分组功能可以应用于各种场景,如用户细分、市场分析、学术研究等。 在技术层面,AutoGroup采用了高效的分组算法,使得其能够在大规…

力扣题目101:对称二叉树

题目描述 给定一个二叉树,检查它是否是镜像对称的。 输入格式 root:二叉树的根节点。 输出格式 返回布尔值,表示树是否对称。 示例 示例 1 输入:root [1,2,2,3,4,4,3] 输出:True 示例 2 输入:ro…

亚马逊Lazada速卖通卖家必备:利用自养号测评提升店铺排名与销量

Wish与亚马逊、速卖通、eBay等知名的跨境电商平台有所区别,它专注于移动端市场。对于许多初次涉足跨境电商领域的新手卖家而言,他们往往困惑于如何在Wish上起步,因为该平台的运营模式与其他平台有所不同。Wish是一款基于手机端App的跨境电商平…