shamefully-hoist = true

简介: shamefully-hoist = true

根目录下创建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 文件中:

1. 
 
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 的:


在命令行中:

你可以在安装时直接指定这个选项:


bash复制代码

pnpm install --shamefully-hoist

  1. 但是,请注意,这只会在这次安装时生效。
  2. .npmrc 文件中
    你可以在项目根目录下的 .npmrc 文件中设置这个选项,这样它就会一直生效:

复制代码

shamefully-hoist = true

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


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


目录
相关文章
|
4月前
|
SQL 数据库
Result Set
【11月更文挑战第02天】
56 1
|
7月前
|
机器学习/深度学习 监控 数据可视化
Ultralytics是什么?
【8月更文挑战第3天】Ultralytics是什么?
455 0
|
9月前
|
计算机视觉
detectMultiScale
【6月更文挑战第8天】
420 4
|
IDE Java 程序员
What is null?
按照惯例还是在文章开头随便聊聊。之前这个环节是借鉴的why哥,叫“荒腔走板”。现在决定还是换一个有自己特色的名字,冥思苦想,最终拍板“Y说”。 有一段时间没在公众号更新文章了,其实也不是忙,就是有点懒(主要原因),再加上没有太多灵感,所以,很抱歉~
261 0
|
人工智能
Colorful Slimes
题目描述 Snuke lives in another world, where slimes are real creatures and kept by some people. Slimes come in N colors. Those colors are conveniently numbered 1 through N. Snuke currently has no slime. His objective is to have slimes of all the colors together.
106 0
|
数据库
Multiple Server Query Execution报The result set could not be merged..
在SQL Server中使用Multiple Server Query Execution这个功能做数据库维护或脚本发布时非常方便,昨天由于磁盘空间原因,删除清理了大量的软件和组件,结果导致SSMS客户端出了问题,重装过后,使用Multiple Server Query Execution时,出现了...
1020 0
|
SQL 机器学习/深度学习 Oracle