Why use moon?
Working in a language’s ecosystem can be very involved, especially when it comes to managing a repository effectively. Which language version to use? Which dependency manager to use? How to use packages? Or how to build packages? moon aims to streamline this entire process and provide a first-class developer experience.Increased productivity
With Rust as our foundation, we ensure robust speeds, high performance, and low memory usage. Instead of long builds blocking you, focus on your work.
Exceptional developer experience
As veterans of developer tooling, 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 tasks confusion
No more duplicating the same task into every project, or reverse-engineering which root scripts to use. With moon, all you need to know is the project name and task name.
Key Features
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 Node.js and other tools for consistency across the entire workspace or per project. Project graph - Generates a project graph for dependency and dependent relationships. Dependency graph - Generates a dependency graph to increase performance and reduce workloads. Incremental builds - With our smart hashing, only rebuild projects that have been touched since the last build. Multi-platform - Runs on common development platforms: Linux, macOS, and Windows.Supported Languages
moon’s long-term vision is to robustly support multiple programming languages so that a repository composed of projects with differing languages and tools can all work in unison.| Language | Tier 1 | Tier 2 | Tier 3 |
|---|---|---|---|
| Bash/Batch | ✅ | - | - |
| Bun (JavaScript, TypeScript) | ✅ | ✅ | ✅ |
| Deno (JavaScript, TypeScript) | ✅ | ✅ | ✅ |
| Go | ✅ | ✅ | ✅ |
| Node (JavaScript, TypeScript) | ✅ | ✅ | ✅ |
| PHP | ✅ | - | - |
| Python | ✅ | 🟣 | 🟣 |
| Ruby | ✅ | - | - |
| Rust | ✅ | ✅ | ✅ |
| Other (Kotlin, Java, C#, …) | ✅ | - | - |
- Tier 1: Project categorization - Projects can configure their primary language
- Tier 2: Ecosystem platformization - Deep integration with the language’s ecosystem
- Tier 3: Toolchain integration - Language is directly supported in the toolchain and automatically downloaded
- 🟣 = Partially supported (experimental)
Next Steps
Install moon
Get started by installing moon on your system
Setup Workspace
Initialize moon in your repository