纱线2-带Prolog和插件

Yarn-节点的程序包管理器- 发布了第二个版本似乎这些家伙认真地着手改变节点生态系统中的现状,甚至在软件包管理器中也是如此。删除有关技嘉Nurse node_modules的所有图片yarn install从脚本CI中删除,我们开始另一个JavaScript困惑。简而言之:

  • 通过插件,Plug'n'Play模式成为默认模式,而node_modules成为辅助模式。
  • 我们为monorep创建了插件和工作流程-也许不需要lerna。
  • 它们内置在微型外壳中,因此在Windows中无需交叉环境即可运行包的脚本。
  • 添加了序言以检查工作空间之间的规则。
  • npx再次冲了下去。
如果您不想更新所有项目,只需在应保留在Yarn 1上的存储库中运行yarn policies set-version ^1(请参见legacy.yarnpkg.com/en/docs/cli/policies)并提交结果。然后,Yarn将使用本地的Yarn 1二进制文件而不是全局的二进制文件,因此团队中的每个人都将使用相同的版本!


通常,可以追踪两个发展方向:a)环境的最大可复制性; b)向包装管理平台发展。

关于第一点,yarn始终是驱动器-实际上,这就是它曾经出现的原因,立即挤压npm(回想一下,然后运行npm install可能会得出不同的结果,因为节点世界中的锁定文件是yarn的优点) 。尽管由于npm日志中的激怒行而我个人选择了它

但是现在可以说,他们决定将极限推向极限。当您添加一个包时,它(及其所有依赖项)以zip存档的形式被添加到缓存中,位于包文件夹(如.git)的.yarn文件夹中。代替node_modules的是,创建了.pnp.js文件,该文件处理模块导入。有两个重要结果:

  1. 您可以将此缓存直接添加到git中,然后在签出后立即获得具有所有依赖项的应用程序的当前版本。
  2. 纱线链接效果更好-现在,对等项依赖关系也得到了正确处理

至于平台,这些家伙切换到了插件架构(即首先将yarn作为API,然后又作为CLI),甚至宣布他们希望摆脱节点本身,从而将yarn作为构建自己的包管理器的通用解决方案

听起来很有趣,雄心勃勃,有些自大。让我们看看他们是否可以在即插即用的第一阶段就应对或停滞。

无论如何,如果可行,我将尝试将我们的项目转移到yarn 2上-很好。你好吗?

UPD:关于标题中的序言不是开玩笑,可以编写检查工作空间的规则next.yarnpkg.com/features/constraints Next- 官方公告

的摘录

最重要的


重新设计了控制台中的输出以提高可读性
CLI命令(yarn add...)现在考虑vorkspeysy
您可以摆脱 危害较小的替代npx:的yarn install存储库
在所有vorkspeysah上运行yarn dlx一次性的
运行命令,并yarn workspaces foreach
通过补丁日志通过Mankipatching数据包:
链接到本地​​软件包通过门户网站协议:
可以正常释放工作空间的新工作流程
声明式检查和工作空间修复(已包含PROLOG)

并且 ...


只有在没有此软件包的情况下才构建软件包,否则绝对
不能打开或关闭软件包的构建
。在通用Shell中执行脚本,
即使通过毛线链接也可以运行对等依赖项
锁定文件已成为常规YAML
所有代码现在都在TypeScript
插件支持中

重大变化


设置变得统一,
软件包必须遵守其边界,
不再支持捆绑包依赖关系,
软件包存储在只读档案中,

详细的变更日志在此处,更新说明在此处

转到纱线2会很难吗?


感谢我们的Beta测试人员和整个生态系统的支持,我们减轻了与如此大规模升级相关的许多痛苦。重定位指南将提供更详细的信息,但总的来说,当您使用最新版本的工具(ESLint,Babel,TypeScript,Gatsby等)时,一切都应该正常。

但是有一个重要的障碍Flow和React-Native现在不能与Plug'n'Play(PnP)一起使用我们正在寻找与团队合作的方法。现在,您可以继续使用Yarn 1或使用node_modules插件,该插件提供向后兼容性以促进过渡(它仍在运行中,可能存在错误)。这里更多

旧版本会发生什么?


纱线1.22将于下周发布。此后,1.x分支将正式进入实时模式-也就是说,除了漏洞修复程序之外,没有其他版本。新功能将专门在Yarn 2中实现。实际上,这意味着:

  • 旧的存储库(yarnpkg / yarn)将保留为yarnpkg / legacy以反映其生存状态。它会开放一段时间,但很可能我们会在一两年内将其存档。
  • 新的存储库不会重命名为yarnpkg / yarn,因为这会破坏许多旧的链接。在可预见的将来,他将继续留在yarnpkg / berry
  • 旧站点将转到legacy.yarnpkg.com,新站点(现在为next.yarnpkg.com)将转到主域yarnpkg.com
  • npm上的yarn包将像这样更新:

    • berry标签将始终显示在最新的2.x版本中
    • legacy 1.x
    • latest legacy , berry. , Yarn 2.
  • - Node Yarn 2 Node 14, 2020 . yarnPath Yarn 2 .
  • 我们正在切换到全自动GitHub动作,并且一些批处理存储库(尤其是Homebrew,Chocolatey等)尚未解决。结果,他们将在其余时间之后收到Yarn 2更新。我们建议使用纱线设置版本(或纱线1上的纱线策略设置版本)。

我们预计大多数此类更改将在2020年2月1日之前完成。

Source: https://habr.com/ru/post/undefined/


All Articles