Skip to content

shamefully-hoist 是什么?

标签
npmrc
pnpm
配置
字数
584 字
阅读时间
3 分钟

概述

shamefully-hoist[1] 是 pnpm 的一个配置选项,用于控制依赖项在 node_modules 中的存储结构。这个选项主要用于处理某些工具对扁平化 node_modules 结构的依赖问题。

配置详情

shamefully-hoist

  • 默认值: false
  • 类型: Boolean

默认情况下,pnpm 创建一个半严格的 node_modules,这意味着依赖项可以访问未声明的依赖项,但 node_modules 之外的模块不行。通过这种布局,生态系统中的大多数的包都可以正常工作。但是,如果某些工具仅在提升的依赖项位于根目录的 node_modules 时才有效,您可以将其设置为 true 来为您提升它们。

使用场景

  1. 兼容性问题: 某些老旧的工具或库可能需要扁平化的 node_modules 结构
  2. 迁移过渡: 从 npm/yarn 迁移到 pnpm 时,临时使用该选项解决兼容性问题
  3. 特定工具要求: 某些构建工具或开发工具可能强制要求扁平化的依赖结构

pnpm install 相关参数

别名: i

pnpm install 用于安装项目所有依赖。在 CI 环境中,如果存在需要更新的 lockfile 会安装失败,所以每次版本更新后,本地一定要 install 后再提交,否则会导致版本发布失败。

重要参数说明

  • --fix-lockfile: 参数自动修复损坏的 lock 文件入口,首次安装时候特别有用。如果遇到某个包找不到,可能是幻影依赖的问题,需要手动添加依赖或者排查原因。

  • --shamefully-hoist: 创建一个扁平 node_modules 目录结构,类似于 npmyarn。这是非常不推荐的,但在特定场景下可以解决迁移后的兼容性问题。

最佳实践

  1. 优先使用默认配置(shamefully-hoist=false)
  2. 仅在遇到特定工具兼容性问题时临时启用
  3. 启用后要注意可能带来的依赖管理问题
  4. 长期应该寻求更好的解决方案,而不是依赖此配置

贡献者

页面历史


  1. shamefully-hoist ↩︎