切换主题
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
来为您提升它们。
使用场景
- 兼容性问题: 某些老旧的工具或库可能需要扁平化的 node_modules 结构
- 迁移过渡: 从 npm/yarn 迁移到 pnpm 时,临时使用该选项解决兼容性问题
- 特定工具要求: 某些构建工具或开发工具可能强制要求扁平化的依赖结构
pnpm install 相关参数
别名: i
pnpm install
用于安装项目所有依赖。在 CI 环境中,如果存在需要更新的 lockfile 会安装失败,所以每次版本更新后,本地一定要 install 后再提交,否则会导致版本发布失败。
重要参数说明
--fix-lockfile
: 参数自动修复损坏的 lock 文件入口,首次安装时候特别有用。如果遇到某个包找不到,可能是幻影依赖的问题,需要手动添加依赖或者排查原因。--shamefully-hoist
: 创建一个扁平node_modules
目录结构,类似于npm
或yarn
。这是非常不推荐的,但在特定场景下可以解决迁移后的兼容性问题。
最佳实践
- 优先使用默认配置(shamefully-hoist=false)
- 仅在遇到特定工具兼容性问题时临时启用
- 启用后要注意可能带来的依赖管理问题
- 长期应该寻求更好的解决方案,而不是依赖此配置