8个版本

0.0.9 2024年6月25日
0.0.8 2024年6月4日
0.0.7 2024年4月18日
0.0.6 2024年3月25日
0.0.1 2024年1月24日

WebAssembly 中排名第 871

每月下载量 25

MIT 许可证

10KB
172

moon

moon是一个用于Web生态系统的仓库管理、组织、协调和通知工具,用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钩子以强制实施工作流程和贡献者的要求。

贡献者

特别感谢为这个项目做出贡献的可爱的人们

Contributors

依赖

~39–55MB
~1M SLoC