美研究人员发明全新感应设备 通过AI识别手势
|
Buck被设计用来构建一个monorepo,而对monorepo设计的支持激发了Buck对cell和项目的支持。 Facebook的经验是,将所有的依赖关系维护在同一个版本库中,可以更容易地确保所有开发者拥有正确的代码版本,并简化了进行原子提交的过程。 Buck常用于Android和iOS开发。 8. Pants构建系统(Twitter)
2014年,Twitter推出了名为Pants的monorepo构建系统。今天,在v2版本上,Pants的目标是成为一个快速、可扩展的构建系统,以适应不断增长的代码库。目前,它的重点是Python,很快就会支持其他语言。 Uber开发者使用Bazel来构建他们的Go monorepo。Uber用Go编写了大部分的后端服务和库,在2018年,这些服务和库都被归纳到一个大型的Go monorepo中,现在有超过10万个文件。Bazel让这个项目得以扩展,缩短了构建时间,并支持其发展。 这是一个不错的小型开源项目,以Bazel作为演示:thundergolfer/example-bazel-monorepo Bazel被设计成大规模工作,并支持跨分布式基础设施的增量密封构建,这是大型代码库所必需的。有了Bazel的远程缓存,构建服务器还可以共享它们的构建工件。Bazel缓存所有以前完成的工作,并跟踪对文件内容和构建命令的更改。只有在包或包的依赖关系发生更改时,才构建和测试包。 Bazel可以在Linux、macOS和Windows上运行。Bazel可以从同一个项目为多个平台构建二进制文件和可部署的包,包括桌面、服务器和移动设备。支持许多语言,你可以扩展Bazel来支持任何其他语言或框架。 7. Buck构建系统 (Facebook)
Buck是一个鼓励创建由代码和资源组成的小型可重用模块的构建系统,支持不同平台上的各种语言。 erna 的两个主要命令是 lerna bootstrap 和 lerna publish。bootstrap 会将 repo 中的依赖关系连接在一起,publish 会帮助发布任何更新的包。 您可以使用以下两种模式之一来管理项目:固定(Fixed)或独立(Independent)。
固定模式的Lerna项目是以单一的版本行来操作的,版本是保存在你的项目根目录下的 lerna.json 文件中的 version 键。当您运行 lerna publish 时,如果一个模块在上次发布后被更新,它将被更新到您发布的新版本。这是Babel目前使用的模式 Rush独特的安装策略为你的所有项目生成一个快速安装的单一收缩/锁定文件。Rush会检测你的依赖关系图,并以正确的顺序构建你的项目,所以如果两个包之间没有直接的依赖关系,Rush会将它们作为单独的进程并行构建。
如果你只打算使用你的repo中的几个项目,Rush提供了子集和增量构建,所以 rush rebuild --to 当你想发布的时候,Rush支持批量发布,所以它会检测哪些包有变化,自动跳转所有相关的版本号,并在每个文件夹中运行 npm publish 。 Rush还有助于实施和执行发展政策。例如,当创建PR时,你可以要求开发人员提供受影响项目的主要/次要/补丁日志条目,这些条目随后将在发布时汇总到一个变更日志文件中。它还可以帮助你执行诸如发布前的审查、特定的依赖版本等东西。 5. Lerna
Lerna(以多头野兽Hydra的家命名)是一个“用于管理带有多个包的JavaScript项目的工具”。 (编辑:惠州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
