@ effected/pnpm- plugin 效果
一个小时 配置依赖 将两个软件包的版本集中到四个 pnpm 目录编辑 effect 双盖 effect 联 合 国 @effect/* 一号卫星 效果 v4 释放,加 @effect/tsgo (a) 独立针 effected 双面覆盖每个已发布 @effected/* 除了这个包。 每个配对都有你所依赖的版本的目录,第二个是您作为同伴所广告的范围的目录,所以一个库不会过度限制安装它的应用程序. 安装一次, 工作空间的每个软件包都可以使用全部四个目录 .
预
1.0.0。 。 。 . 此软件包是@effected/*在稳定基础上建造的工具包 效应v4(effect^4.0.0) 并仍在0.x发展。 稳定效果 制作一个工具箱1.0.0可能,不是自动的。 为了保持你的effect财务报告和审定财务报表@effect/*该工具包在线上构建和测试、安装@effected/pnpm-plugin-effect。 。 。 .稳定:不稳定. 此软件包的 API 表面尚未考虑 完成并可能改变
0.x释放 定一个确切的版本——甚至 标记软件包 稳定 在此之前1.0.0可以引入突破性更改 和精确的针 变成一个类型检查错误 而不是一个 跑步时间惊喜。 完全政策: 释放策略。 。 。 .
为什么 @ effect/pnpm- plugin 效果
效应船作为一打必须一起移动的包裹. 用手把它绑住,针会飘来飘去: @effect/* 组合垫款,其 effect pal 不再匹配您安装的核心, 失败会作为未被触碰的文件的类型错误表面 。 把针放在一个地方是整个想法,pnpm目录是机制—— catalog:effect ,在显示而非版本字符串中,在指针推进时,在一个地方编辑.
这个 @effected/* 工具箱有同样的问题 在更锋利的边缘。 每个套装都打开了 0.x当护身符没有穿过未成年人, 所以手写 ^0.14.0 停止解析当前切换包时的任何内容 0.15.0散出十几张名单 这些靶场静静地独立地腐烂 没有任何东西告诉你一个包裹 已经落下两个未成年人 直到一个装置拒绝给你任何电流. catalog:effected 将区域替换为名称,升级配置依赖性会同时移动整个工具包表面.
对应目录是您无法从目录中获取的部分 。 图书馆的 peerDependencies 应该像 宽 因为它可以安全,而它的 devDependencies 应该像 具体 这些数字不同,用人工计算整个生态系统的同龄人底数是严峻的. effect:peers 财务报告和审定财务报表 effected:peers 是计算,一次完成。 这是一个方便,而不是要求——它包罗万象 实际 因此,一个想要同样的学科的项目可以采用它而不是重建它。 它运送目录和一个pnpmfile,而不是代码API.
安装
添加成一个 配置依赖 ——不是经常依赖. 配置依赖在树的其他部分前被安装,这就使得它们为安装提供目录和钩子如下:
pnpm add --config @effected/pnpm-plugin-effect
要求pnpm 11或更新,和Node.js QQ24.11.0. 没有npm或线条等同: 配置依赖和目录是pnpm的特性.
命令将软件包写入您的 pnpm-workspace.yaml数字 :
configDependencies:
"@effected/pnpm-plugin-effect": <version>+sha512-...
事后检查一下档案,并期望用手来修复. 在pnpm 11.24.0时 pnpm add --config 写入新条目 无 一个完整的散列,并剥去 +sha512-… 后缀从每个 其他项目 已经列出的配置依赖——包括命令没有理由触及的那些依赖。 一会儿 pnpm install 不恢复它们。 配置依赖被安装在所有其他东西之前,并且可以贡献在安装过程中运行的钩子,所以完整性指针是站在你和一个没有验证的包之间,具有这种伸展能力的东西.
手写散列被接受和保存,所以固定是放回:
configDependencies:
"@effected/pnpm-plugin-effect": 0.6.11+sha512-...
"@your-org/other-config-dep": 1.2.3+sha512-... # restore this one too
您可以从登记册中读取正确的散列版本 :
npm view "@effected/pnpm-plugin-effect@<version>" dist.integrity
使用量
安装后,工作空间的每个软件包都可以使用全部四个目录. 参考他们来自 package.json 按名称,取而代之的是版本范围。 他们进入的哪个字段取决于您是否正在构建一个应用程序或一个库.
应用程序直接将版本贴上 dependencies数字 :
{
"dependencies": {
"effect": "catalog:effect",
"@effect/ai-openai": "catalog:effect",
"@effected/workspaces": "catalog:effected"
}
}
图书馆既要每双的一半:被绑定的版本进行开发和测试,也要计算出消费者必须满足的地板.
{
"devDependencies": {
"effect": "catalog:effect",
"@effected/workspaces": "catalog:effected"
},
"peerDependencies": {
"effect": "catalog:effect:peers",
"@effected/workspaces": "catalog:effected:peers"
}
}
pnpm 重写 catalog: 具体范围的说明者,当它公布时,所以登记簿上哪些土地是普通的。 下游不需要这个插件, 或是 pnpm .
飞来飞去
| 目录 | 目录 | 用进去 |
|---|---|---|
catalog:effect | 每个 effect 财务报告和审定财务报表 @effect/* 软件包, 绑入一个 v4 释放 | dependencies 申请, devDependencies 图书馆 |
catalog:effect:peers | 计算共享对等层的同一套软件包 | peerDependencies 图书馆 |
catalog:effected | 每一份出版物 @effected/* 当前发行的软件包 | dependencies 申请, devDependencies 图书馆 |
catalog:effected:peers | 同一套套装在小底同位素范围内 | peerDependencies 图书馆 |
@effected/pnpm-plugin-effect 本身被故意缺席 effected 编目——这是编目船内部的包裹,列出它会让每个编目重写会撞出装有编目的包裹.
它也运载了pnpmfile,pnpm从配置依赖自动加载. 没有什么可以导入的,也没有可以调用的——软件包没有代码API,只有配置.
除了目录, pnpmfile 对每个消费者应用两个设置:
- 排除释放年龄:
effect财务报告和审定财务报表@effect/*豁免minimumReleaseAge,所以一个固定效应释放 仅几小时的旧. - 范围覆盖 :
@effect/platform-node-shared刻入其父版本@effect/[email protected]财务报告和审定财务报表@effect/[email protected]新的决心将它与为另一种人建造的更新的工具结合起来effect,在启动时崩溃工具。 每个超接只应用在自己的母程序下,所以一个稳定的安装从不被触碰,你自己的overrides被保存在他们旁边。 如果您自己设置了相同的选择器, 您的值会获胜, 插件会警告 .
这个 effect 当效应针推进时,目录会移动,这是人为的蓄意升级. 这个 effected 目录是随着工具包的放行而自动重建的,因此这个软件包的每个新版本都携带了工具包的当前版本;提升配置依赖性是消费者如何取取.
pnpm update --config @effected/pnpm-plugin-effect
pnpm install
# every catalog: specifier in the workspace re-resolves to the new pins
因为效果释放 effect 和每个 @effect/* 将软件包放在一个版本,两个版本 effect 分类基本一致。 一旦软件包的放出脱离同步,地板的计算就能赚取其保值——它在Effect v3中挣得,地板在V3中确实存在差异。 这个 effected 双胞胎通常有差异,因为套件的依赖性会跟踪其准确的释放,而同位素范围则会降低到未成年人.