You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* feat: Add moonrepo support
- Add moonrepo configuration files (.moon/workspace.yml, .moon/toolchain.yml, .moon/tasks/node.yml)
- Update benchmark-json.ts to include moonrepo benchmarking
- Update TypeScript types to include moon tool
- Add moonrepo as devDependency in package.json
- Update README.md to include moonrepo in benchmarks
- Update comparison scripts to handle moonrepo results
- Update release scripts to include moonrepo version info
Closes#18
* chore: Update project configuration and package structure
- Add new entries to .gitignore for moon executables and lerna logs
- Update .prettierignore to include .nx/cache
- Enable caching in nx.json build configuration
- Set package manager to pnpm@10.10.0 and node engine to 22.9.0 in package.json
- Update pnpm workspace to include '@moonrepo/cli' and 'sharp' as built dependencies
- Change main and types paths in multiple package.json files from './index.ts' to './src/index.ts'
- Remove unused readme assets (turbo-nx-perf.gif, turbo-nx-terminal.gif)
- Update TypeScript types in scripts/types.ts to include comparisons field
* feat: Enhance benchmarking consistency and error handling
- Introduced Nx-specific environment variables to ensure consistent benchmarking across runs.
- Refactored command execution to include a fallback mechanism for handling SQLite failures during benchmarks.
- Updated documentation in the README to clarify benchmarking instructions.
Combined there are about 26k components. It's a lot of components, but they are very small. This corresponds to a medium
14
10
size enterprise repo. A lot of our clients have repos that are 10x bigger than this, so this repo isn't something out or
15
-
ordinary. And, the bigger the repo, the bigger the difference in performance between Nx and Turbo.
11
+
ordinary. And, the bigger the repo, the bigger the difference in performance between Nx and other tools.
16
12
17
-
The repo has Nx, Turbo, Lernaand Lage enabled. They don't affect each other. You can remove one without affecting the
18
-
other one.
13
+
The repo has Nx, Turbo, Lerna, Lage, and Moon enabled. They don't affect each other. You can remove one without affecting the
14
+
others.
19
15
20
-
## Benchmark & Results (June 24, 2025)
16
+
## Benchmark & Results (January 2025)
21
17
22
18
Run `pnpm run benchmark`. The benchmark will warm the cache of all the tools. We benchmark how quickly
23
-
Turbo/Nx/Lage/Lerna can figure out what needs to be restored from the cache and restores it.
19
+
Turbo/Nx/Lage/Lerna/Moon can figure out what needs to be restored from the cache and restores it.
24
20
25
21
These are the numbers using GitHub Actions runner:
26
22
27
23
* average lage time is: 11830.6
28
24
* average turbo time is: 9992.2
29
25
* average lerna (powered by nx) time is: 3407.0
26
+
* average moon time is: TBD (pending benchmark)
30
27
* average nx time is: 1849.4
31
28
* nx is 6.4x faster than lage
32
29
* nx is 5.4x faster than turbo
33
30
* nx is 1.8x faster than lerna (powered by nx)
31
+
* nx vs moon performance comparison: TBD
32
+
33
+
### About Moon
34
+
35
+
[Moon](https://moonrepo.dev/) is a Rust-based build system and monorepo management tool that focuses on performance and developer experience. Key features include:
36
+
37
+
***Performance**: Written in Rust for maximum speed and efficiency
38
+
***Smart Caching**: Advanced caching mechanisms with remote caching support
39
+
***Task Pipeline**: Efficient task orchestration with dependency management
40
+
***Language Support**: Multi-language support including Node.js, Python, Rust, and more
41
+
***Configuration**: YAML-based configuration with intelligent defaults
42
+
***Incremental Building**: Only builds what's changed for faster development cycles
34
43
35
44
### Does this performance difference matter in practice?
36
45
37
-
The cache restoration Turborepo provides is likely to be fast enough for a lot of small and mid-size repos.
46
+
The cache restoration that tools like Turborepo and Moon provide is likely to be fast enough for a lot of small and mid-size repos.
38
47
What matters more is the ability to distribute any command across say 50 machines while
39
48
preserving the dev ergonomics of running it on a single machine. Nx can do it. Bazel can do it (which Nx
40
49
borrows some
41
-
ideas from). Turbo can't. This is where the perf gains are for larger repos.
50
+
ideas from). Moon supports remote caching which enables distributed builds. This is where the perf gains are for larger repos.
42
51
See [this benchmark](https://github.com/vsavkin/interstellar) to learn more.
43
52
44
53
## Dev ergonomics & Staying out of your way
@@ -48,8 +57,6 @@ faster, but Turbo is built to stay out of you way". Let's talk about staying out
48
57
49
58
Run `nx build crew --skip-nx-cache` and `turbo run build --scope=crew --force`:
0 commit comments