ランキングに戻る

moonrepo/moon

Rustmoonrepo.dev/moon

A build system and monorepo management tool for the web ecosystem, written in Rust.

build-systembuild-toolci-cdjavascriptnodejsrusttypescriptworkspacetask-runnermonorepomonorepo-toolinggolang
スター成長
スター
4k
フォーク
239
週間成長
Issue
95
1k2k3k4k
2022年3月2023年8月2025年2月2026年7月
成果物crates.iocargo add moon
README

moon

moon is a repository management, organization, orchestration, and notification tool for the web ecosystem, written in Rust. Many of the concepts within moon are heavily inspired from Bazel and other popular build systems.

Why use moon?

Working in a developer ecosystem can be very involved, especially when it comes to managing a repository effectively. Which package manager to use? Which language version to use? How to import packages? How to build code? So on and so forth. moon aims to streamline this entire process and provide a first-class developer experience.

  • Increased productivity - With Rust as our foundation, we can ensure robust speeds, high performance, and low memory usage. Instead of long builds blocking you, focus on your work.
  • Exceptional developer experience - As veterans, we're well aware of the pain points and frustrations. Our goal is to mitigate and overcome these obstacles.
  • Incremental adoption - At its core, moon has been designed to be adopted incrementally and is not an "all at once adoption". Migrate project-by-project, or task-by-task, it's up to you!
  • Reduced scripts confusion - package.json scripts can become unwieldy, very quickly. No more duplicating the same script into every package, or reverse-engineering which root scripts to use. With moon, all you need to know is the project name, and a task name.
  • Ensure correct versions - Whether it's Node.js or another language, ensure the same version of each tool is the same across every developer's environment. No more wasted hours of debugging.
  • Automation built-in - When applicable, moon will automatically install node_modules, or sync package dependencies, or even sync TypeScript project references.
  • And of course, the amazing list of features below!

Features

Not all features are currently supported, view the documentation for an accurate list!

Management

  • Smart hashing - Collects inputs from multiple sources to ensure builds are deterministic and reproducible.
  • Remote caching - Persists builds, hashes, and caches between teammates and CI/CD environments.
  • Integrated toolchain - Automatically downloads and installs explicit versions of tools for consistency across the entire workspace or per project.
  • Multi-platform - Runs on common development platforms: Linux, macOS, and Windows.

Organization

  • Project graph - Generates a project graph for dependency and dependent relationships.
  • Code generation - Easily scaffold new applications, libraries, tooling, and more!
  • Dependency workspaces - Works alongside package manager workspaces so that projects have distinct dependency trees.
  • Code ownership - Declare owners, maintainers, support channels, and more. Generate CODEOWNERS.

Orchestration

  • Dependency graph - Generates a dependency graph to increase performance and reduce workloads.
  • Action pipeline - Executes actions in parallel and in order using a thread pool and our dependency graph.
  • Action distribution - Distributes actions across multiple machines to increase throughput.
  • Incremental builds - With our smart hashing, only rebuild projects that have been changed since the last build.

Notification

  • Flakiness detection - Reduce flaky builds with automatic retries and passthrough settings.
  • Webhook events - Receive a webhook for every event in the pipeline. Useful for metrics gathering and insights.
  • Terminal notifications - Receives notifications in your chosen terminal when builds are successful... or are not.
  • Git hooks - Manage Git hooks to enforce workflows and requirements for contributors.

Contributors

Special thanks to the wonderful people who have contributed to this project:

Contributors

関連リポジトリ
meteor/meteor

Meteor, the JavaScript App Platform

JavaScriptnpmOtherjavascriptmeteor
meteor.com
44.8k5.2k
vercel/turborepo

Build system optimized for JavaScript and TypeScript, written in Rust

Rustcrates.ioMIT Licensemonorepojavascript
turborepo.dev
30.8k2.4k
nrwl/nx

The Monorepo Platform that amplifies both developers and AI agents. Nx optimizes your builds, scales your CI, and fixes failed PRs automatically. Ship in half the time.

TypeScriptnpmMIT Licensenxangular
nx.dev
29.1k2.8k
bazelbuild/bazel

a fast, scalable, multi-language and extensible build system

JavaMavenApache License 2.0bazelbuild
bazel.build
25.6k4.5k
jetify-com/devbox

Instant, easy, and predictable development environments

GoGo ModulesApache License 2.0devboxdevelopment-environment
jetify.com/devbox/
12.2k347
earthly/earthly

Super simple build framework with fast, repeatable builds and an instantly familiar syntax – like Dockerfile and Makefile had a baby.

GoGo ModulesMozilla Public License 2.0build-automationbuild
earthly.dev
12k456
platformio/platformio-core

Your Gateway to Embedded Software Development Excellence :alien:

PythonPyPIApache License 2.0iotembedded
platformio.org
9.4k897
rizsotto/Bear

Bear is a tool that generates a compilation database for clang tooling.

Rustcrates.ioGNU General Public License v3.0compilation-databaseclang
6.4k368
theos/theos

A cross-platform suite of tools for building and deploying software for iOS and other platforms.

MakefileOthertheosios
theos.dev
4.9k1.1k
style-dictionary/style-dictionary

A build system for creating cross-platform styles.

JavaScriptnpmApache License 2.0stylestyleguide
styledictionary.com
4.7k621
oxequa/realize

Realize is the #1 Golang Task Runner which enhance your workflow by automating the most common tasks and using the best performing Golang live reloading.

GoGo ModulesGNU General Public License v3.0golangbuild-tool
4.4k230
amzn/style-dictionary

A build system for creating cross-platform styles.

JavaScriptnpmApache License 2.0stylestyleguide
styledictionary.com
4.1k580