7 个版本
0.0.9 | 2024年6月25日 |
---|---|
0.0.8 | 2024年6月4日 |
0.0.7 | 2024年4月18日 |
0.0.5 | 2024年3月25日 |
0.0.2 | 2024年1月30日 |
#326 在 构建工具 中
用于 3 个 crate(通过 moon_pdk_api)
165KB
4K SLoC
moon
moon 是一个用于网络生态系统的仓库管理、组织、协调和通知工具,使用 Rust 编写。moon 中的许多概念都受到了 Bazel 和其他流行构建系统的极大启发。
为什么使用 moon?
在开发者生态系统中工作可能会非常复杂,尤其是在有效管理仓库方面。使用哪个包管理器?使用哪个语言版本?如何导入包?如何构建代码?等等。moon 旨在简化整个流程,并提供一流的开发者体验。
- 提高生产力 - 以 Rust 为基础,我们可以确保稳健的速度、高性能和低内存使用。不再让漫长的构建过程阻挡你的工作。
- 卓越的开发者体验 - 作为经验丰富的团队,我们非常了解痛点和挫败感。我们的目标是减轻和克服这些障碍。
- 逐步采用 - moon 的核心设计是为了逐步采用,而 不是 “一次性采用”。按项目或任务迁移,由你决定!
- 减少脚本混淆 -
package.json
脚本可能会很快变得难以控制。不再需要在每个包中重复相同的脚本,或反向工程要使用哪个根脚本。使用 moon,你只需要知道项目名称和任务名称。 - 确保正确版本 - 不论是 Node.js 还是其他语言,都确保每个工具的版本在每个开发者的环境中都是相同的。不再有浪费小时的调试。
- 内置自动化 - 当适用时,moon 会自动安装
node_modules
、同步包依赖项,甚至同步 TypeScript 项目引用。 - 当然,下面还有令人惊叹的功能列表!
功能
并非所有功能都目前支持,请查看文档以获取准确的列表!
管理
- 智能哈希 - 从多个来源收集输入,以确保构建是确定性和可重复的。
- 远程缓存 - 在团队成员和CI/CD环境之间持久化构建、哈希和缓存。
- 集成工具链 - 自动下载和安装显式版本的工具,以确保整个工作区或每个项目的统一性。
- 多平台 - 在常见的开发平台上运行:Linux、macOS和Windows。
组织
- 项目图 - 生成项目图以显示依赖关系和依赖关系。
- 代码生成 - 轻松搭建新应用程序、库、工具等!
- 依赖工作区 - 与包管理器工作区协同工作,使项目具有不同的依赖树。
- 代码所有权 - 声明所有者、维护者、支持渠道等。生成CODEOWNERS。
编排
- 依赖图 - 生成依赖图以提高性能和减少工作负载。
- 操作管道 - 使用线程池和我们的依赖图并行且有序地执行操作。
- 操作分发 - 将操作分发到多台机器以提高吞吐量。
- 增量构建 - 使用我们的智能哈希,仅重建自上次构建以来已修改的项目。
通知
- 故障检测 - 通过自动重试和透传设置减少故障构建。
- Webhook事件 - 在管道中的每个事件上接收Webhook。对于指标收集和洞察非常有用。
- 终端通知 - 当构建成功...或失败时,在您选择的终端中接收通知。
- Git钩子 - 管理Git钩子,以强制执行工作流程和贡献者的要求。
贡献者
特别感谢为该项目做出贡献的可爱的人们
依赖
~11–33MB
~527K SLoC