@moonrepo/cli
Advanced tools
Comparing version 1.8.3 to 1.9.0
1141
CHANGELOG.md
# Changelog | ||
## 1.9.0 | ||
#### 🚀 Updates | ||
- Added VCS hooks management support. | ||
- Added `vcs.hooks` and `vcs.syncHooks` settings to `.moon/workspace.yml`. | ||
- Added `moon sync hooks` command. | ||
- Added `--clean` and `--force` flags to `moon sync codeowners` command. | ||
- Updated `moon init` to: | ||
- Detect an applicable VCS provider and set the `vcs.provider` setting. | ||
- Convert a detected tool version to a fully-qualified semantic version. | ||
- **Node.js** | ||
- Moved syncing logic from `InstallNodeDeps` action to `SetupNodeTool` action. This includes | ||
syncing `packageManager`, `engines`, and version files. This should feel more natural. | ||
#### 🐞 Fixes | ||
- Fixed an issue where task hashes would be different between Windows and Unix machines. | ||
- Root cause is that arguments would use different path separators. | ||
- Fixed an issue where `dev`, `start`, or `serve` tasks would not always be marked as `local`. | ||
- Fixed an issue where inherited tasks parameters (inputs, deps, etc) would sometimes be lost based | ||
on the merge strategy. | ||
- Fixed an issue with dependency graph cycle detection. | ||
#### ⚙️ Internal | ||
- Updated to proto v0.11. | ||
- Dropped SVN support since it was never finished and doesn't work. | ||
- Improved VCS file handling, caching, and performance. | ||
## 1.8.3 | ||
@@ -41,4 +71,3 @@ | ||
- Added `MOON_OUTPUT_STYLE` and `MOON_RETRY_COUNT` environment variables. | ||
- Rust | ||
- **Rust** | ||
- Improved Cargo workspace root and members detection. | ||
@@ -335,1109 +364,1 @@ | ||
- We now create a [cache directory tag](https://bford.info/cachedir) in `.moon/cache`. | ||
## 0.26.6 | ||
#### 🐞 Fixes | ||
- Fixed an issue where using a custom project language would break the project graph cache. | ||
## 0.26.5 | ||
#### 🐞 Fixes | ||
- Fixed an issue with pnpm lockfile parsing. | ||
- Fixed an issue where the project graph cache wouldn't be invalidated if moon was ran from a | ||
sub-directory. | ||
## 0.26.4 | ||
#### 🐞 Fixes | ||
- Fixed an issue where failing tasks ran with the global `moon` binary wouldn't bubble up the | ||
correct exit code. | ||
- Fixed an issue where a root-level project was synced as a TypeScript project reference to itself. | ||
## 0.26.3 | ||
#### 🚀 Updates | ||
- Task `inputs` declared as literal file paths will now be logged to the console as a warning when | ||
they do not exist during hashing. | ||
#### 🐞 Fixes | ||
- Fixed an issue when project dependencies that form a cycle would recurse indefinitely and panic. | ||
## 0.26.2 | ||
#### 🐞 Fixes | ||
- Fixed an issue where tasks with `cache` disabled were considered empty hashes when declared as a | ||
dependency of another task. | ||
- Fixed an issue where matching against `package.json` workspaces would sometimes fail. | ||
- Fixed an issue where glob parsing would sometimes fail on Windows. | ||
## 0.26.1 | ||
#### 🚀 Updates | ||
- Unknown config fields will now display a warning. | ||
#### 🐞 Fixes | ||
- Fixed an issue where `moon docker setup` couldn't find the manifest file for staged builds. | ||
#### ⚙️ Internal | ||
- Added a `MOON_DEBUG_PROCESS_ENV` env var for debugging processes. | ||
- Updated glob failures to include the glob expression for easier debugging. | ||
## 0.26.0 | ||
#### 💥 Breaking | ||
- Toolchain has been moved to `~/.proto` from `~/.moon`. This should be a transparent change, but at | ||
minimum your tools will be re-downloaded and installed. | ||
- Targets that generate an empty hash are now considered a failure, as they may be an edge case not | ||
accounted for. | ||
#### 🚀 Updates | ||
- Added a `moon docker setup` command for efficiently installing project dependencies. | ||
- Added a `moon query hash` command for inspecting the hash manifest. | ||
- Added a `moon query hash-diff` command for diffing 2 hashes. | ||
- Updated moon's toolchain to build upon [proto](https://github.com/moonrepo/proto), our new | ||
toolchain layer. | ||
- Updated our toolchain and configuration to take `.prototools` into account. | ||
#### 🐞 Fixes | ||
- Fixed hashing to avoid including `git status` files when running in CI. | ||
- Fixed an issue where dependencies of an affected target were not always being ran. | ||
- Fixed an issue where gitignored folders were being considered projects if the globs matched. | ||
- Fixed an issue where project-level glob negations (starting with `!`) weren't being handled | ||
correctly. | ||
#### ⚙️ Internal | ||
- Updated terminal checkpoint colors for tools to pink (to match proto). | ||
- Migrated to rustls from openssl. Please report any TLS/SSL issues. | ||
- Loosened `package.json` parsing. | ||
## 0.25.4 | ||
#### 🐞 Fixes | ||
- Fixed an issue where an object `browser` field in `package.json` would fail to parse. | ||
- Fixed an issue where checking for a new version would constantly run. | ||
- Fixed an issue where `moon upgrade` would not report a newer available version. | ||
## 0.25.3 | ||
#### 🐞 Fixes | ||
- Fixed an issue where workspace relative `outputs` were not being included in the hashed tarball. | ||
#### ⚙️ Internal | ||
- Reduced new version check to once every 12 hours. | ||
## 0.25.2 | ||
#### 🐞 Fixes | ||
- Fixed an issue where hashing would attempt to hash a directory and crash. | ||
- Fixed an issue where attempting to hash a large number of files (think 10,000) would hang. | ||
- Fixed an issue where offline checks would take longer than expected. | ||
- Fixed an issue where the project graph cache would not invalidate when Rust internals have | ||
changed. | ||
## 0.25.1 | ||
#### 🚀 Updates | ||
- Added a `--force` flag to `moon run` that will bypass affected checks. Useful for always forcing a | ||
run in CI. | ||
#### 🐞 Fixes | ||
- Fixed an issue where `moon init` would panic while checking for a newer version. | ||
## 0.25.0 | ||
#### 💥 Breaking | ||
- Updated `node.version` and `node.<packageManager>.version` to no longer default to a hard-coded | ||
version. When not defined, will fallback to the binary available on `PATH`. | ||
- Updated touched files (in context and queries) to be workspace relative paths instead of absolute. | ||
#### 🚀 Updates | ||
- Added experimental Deno tier 2 support. | ||
- Added offline (no internet connection) support. | ||
- Added project-level TypeScript settings via `toolchain.typescript` in `moon.yml`. | ||
- Updated `language` setting in `moon.yml` to support any custom language. | ||
- Updated project, task, and target identifiers to support periods (`.`). | ||
##### Moonbase | ||
- CI runs can now be tracked in moonbase to gather insights and metrics. | ||
#### 🐞 Fixes | ||
- Fixed an issue where task outputs were considered as input sources when hashing, causing | ||
unnecessary cache misses. | ||
#### ⚙️ Internal | ||
- Updated Rust to v1.67. | ||
- Updated local development to support BSD based unix distros. | ||
- Added `context` to `pipeline.started` and `pipeline.finished` events. | ||
- Refactored glob matching to use workspace relative paths instead of absolute. Please report an | ||
issue if hashing or affected detection is now inaccurate. | ||
- We now build against older operating systems in an attempt to solve GLIBC version errors. | ||
## 0.24.3 | ||
#### 🐞 Fixes | ||
- Fixed an issue where `moon query projects --affected` would hang indefinitely waiting for stdin. | ||
- Fixed an issue where changing `projects` globs wouldn't immediately invalidate the cache. | ||
## 0.24.2 | ||
#### 🚀 Updates | ||
- Added Homebrew as an installation option. | ||
- Added a `moon upgrade` command to upgrade moon to the latest version. | ||
#### 🐞 Fixes | ||
- Fixed `moon bin` failing, even when a tool has been configured. | ||
## 0.24.1 | ||
#### 🐞 Fixes | ||
- Fixed an issue around comparison estimate calculation for run reports. | ||
## 0.24.0 | ||
Remote caching is now publicly available through our new service | ||
[moonbase](https://moonrepo.dev/moonbase)! Sign up for a [free account](https://moonrepo.app/) and | ||
immediately see the benefits in your CI pipelines. | ||
#### 💥 Breaking | ||
- Moved `moon query projects` JSON output behind a `--json` flag. | ||
- Moved `moon query touched-files` JSON output behind a `--json` flag. | ||
#### 🚀 Updates | ||
- Added a `moon completions` command for generating shell completions. | ||
- Added [TypeScript v5](https://devblogs.microsoft.com/typescript/announcing-typescript-5-0-beta/) | ||
support. | ||
- Added a `hasher.walkStrategy` setting to `.moon/workspace.yml`. | ||
- Updated `moon query projects` and `moon query touched-files` default output to be easily readable | ||
and parseable. | ||
##### Projects | ||
- Added a `platform` setting to `moon.yml`, allowing the default platform to be defined for all | ||
tasks. | ||
- Updated task `outputs` to support token functions (`@group`, `@globs`, etc). | ||
##### Runner | ||
- Added an `--interactive` flag to `moon run` to force a target to run in interactive mode. | ||
- Updated tasks marked as `local` to always run in interactive mode. | ||
#### 🐞 Fixes | ||
- Fixed an issue where moon would write to `package.json` or `tsconfig.json` with no changes, | ||
causing modified events to trigger. | ||
#### ⚙️ Internal | ||
- Added initial Go lang support to our toolchain. | ||
- Added a `comparisonEstimate` block to run reports. | ||
- Added `baselineDuration` and `estimatedSavings` to `pipeline.finished` events. | ||
## 0.23.4 | ||
#### 🐞 Fixes | ||
- Fixed an issue where pnpm lockfile parsing would fail when not workspaces enabled. | ||
## 0.23.3 | ||
#### 🐞 Fixes | ||
- Fixed an issue where `git ls-files --deduplicate` wasn't available on older git versions. | ||
#### ⚙️ Internal | ||
- Minor internal changes for upcoming remote caching changes. | ||
## 0.23.2 | ||
#### 🐞 Fixes | ||
- Fixed a recursion issue when attempting to install dependencies and a post-install script would | ||
trigger the process again. | ||
- Fixed an issue where a task may be hashed with the incorrect Node.js version. | ||
- Fixed an issue when running Node.js tasks and the toolchain has not been configured. | ||
- Fixed a typo when installing npm dependencies: `node install` -> `npm install` | ||
#### 0.23.1 | ||
#### 🐞 Fixes | ||
- Fixed an issue where scoped tasks were not being inherited for projects that relied on language | ||
detection. | ||
#### 0.23.0 | ||
#### 💥 Breaking | ||
- Renamed `.moon/project.yml` to `.moon/tasks.yml`. | ||
- Moved `runner.implicitDeps` from `.moon/workspace.yml` to `.moon/tasks.yml` as `implicitDeps`. | ||
- Moved `runner.implicitInputs` from `.moon/workspace.yml` to `.moon/tasks.yml` as `implicitInputs`. | ||
#### 🚀 Updates | ||
- We've improved our task inheritance model to support scoped inheritance based on a project's | ||
`language` and `type`. | ||
- Now supports `.moon/tasks/<language>.yml` and `.moon/tasks/<language>-<type>.yml` configuration | ||
files. | ||
- Added a top-level `env` setting to `moon.yml`. | ||
- Updated task `outputs` to support globs. | ||
- Updated `moon migrate from-turborepo` to preserve globs in outputs. | ||
- Updated project graph to no longer cache when there's no VCS root. | ||
- Updated pnpm to use the new `pnpm dedupe` command when the version is >= 7.26.0. | ||
#### 🐞 Fixes | ||
- Fixed an issue where directories in task `inputs` not using `**/*` would crash git. | ||
- Fixed an issue where the project graph cache was not always resetting based on changes. | ||
- Fixed an issue where run report action durations were innacurate. | ||
#### ⚙️ Internal | ||
- Updated our internal hasher to also take into account untracked files when hashing a directory. | ||
#### 0.22.0 | ||
#### 💥 Breaking | ||
- Renamed the `runner.*` webhook events to `pipeline.*`. | ||
- Renamed the `--upstream` option to `--remote`. | ||
- Removed the `--report` option from `moon check` and `moon run` commands. Reports are now always | ||
created. | ||
#### 🚀 Updates | ||
- We've improved our smart hashing for other use cases besides task running. The first improvement | ||
is that we now hash dependencies to determine whether to run a dependency install, or to skip! | ||
This is much more accurate than before, which only relied on lockfile modified timestamps. | ||
- Added a `moon migrate from-turborepo` command to migrate from Turborepo to moon. | ||
- Updated `moon docker` commands to take into account other programming languages when scaffolding | ||
files. | ||
##### Config | ||
- Added a `versionConstraint` setting to `.moon/workspace.yml` that enforces a requirement on the | ||
running moon binary. | ||
##### Pipeline | ||
- We've refactored the pipeline to use a new thread pool strategy so that we have more control over | ||
concurrency. This also paves the way for future output reporters. | ||
- Added global `--concurrency` option to all `moon` commands, allowing the thread count to be | ||
customized. | ||
##### Projects | ||
- Updated the `project` fields in `moon.yml` to be optional, excluding `description`. | ||
##### Toolchain | ||
- Added Bun as a tier 1 language (doesn't do much at the moment). | ||
- Our toolchain now creates shims for all installed tools, and also utilizes these shims when | ||
executing commands in the pipeline. (Unix only) | ||
#### 🐞 Fixes | ||
- Fixed an issue where `~/.moon` is deleted, but local caching isn't aware of it missing and fails | ||
to run a target. | ||
- Fixed an issue where long-running processes would not exit even after moon has exited. | ||
## 0.21.4 | ||
#### 🐞 Fixes | ||
- Fixed an issue where `runFromWorkspaceRoot` wasn't working correctly for node module binaries. | ||
## 0.21.3 | ||
#### 🚀 Updates | ||
- Updated all global CLI arguments (`--log`, etc) to be able to passed anywhere in the command line. | ||
They no longer have to be passed _before_ the command. | ||
#### 🐞 Fixes | ||
- Fixed an issue where a task's `platform` was being incorrectly merged when inheriting global | ||
tasks. | ||
## 0.21.2 | ||
#### 🚀 Updates | ||
- Added a `--json` flag to `moon dep-graph` and `moon project-graph` that will return the nodes and | ||
edges data as JSON. | ||
#### ⚙️ Internal | ||
- We now include the version and file path of the moon binary being executed in the logs for | ||
debugging purposes. | ||
- Updated remote caching to use a new upload endpoint. | ||
## 0.21.1 | ||
#### 🐞 Fixes | ||
- Fixed an issue with `moon project-graph` that would not include nodes without edges. | ||
- Fixed an issue running the install script in WSL. | ||
## 0.21.0 | ||
#### 🚀 Updates | ||
- We've rewritten our project graph to use eager-loading instead of lazy-loading to improve | ||
performance, and to avoid mutating borrowed data across threads in Rust. We're also no longer | ||
cloning project information unnecessarily, which is a massive memory reduction boost. | ||
- We've also rewritten our dependency graph in a similar fashion, and are now able to efficiently | ||
reference data from the project graph while building the dependency chain. | ||
- You may now install the `@moonrepo/cli` package globally with pnpm and yarn. When running these | ||
globals, moon will attempt to use the binary found in the repo's node modules. | ||
##### Core | ||
- Added a new cache level, `read-write`, that can be passed to `--cache` or `MOON_CACHE`. This is | ||
now the default level, while `write` is now a write-only level. | ||
- Added `--minimal` to `moon init` for quick scaffolding and prototyping. | ||
- Updated the system platform to include the operating system and architecture when hashing. | ||
- Updated remote caching to use presigned URLs when available. | ||
##### Graphs | ||
- Updated `moon dep-graph` and `moon project-graph` to serve interactive graph visualizers using the | ||
cytoscape library. The DOT output has moved behind a `--dot` flag. | ||
##### Runner | ||
- Added `--updateCache` (`-u`) to `moon check` and `moon run` that force updates the cache and | ||
bypasses any existing cache. | ||
- Added `args` and `env` as valid values for the `affectedFiles` task option. | ||
- Updated `moon run` and `moon query touched-files` to support a list of `--status` options. | ||
- Updated pnpm prune to use the [pnpm-deduplicate](https://www.npmjs.com/package/pnpm-deduplicate) | ||
package. | ||
##### Toolchain | ||
- Added 24 hour temporary caching to version manifests to improve performance. | ||
- Updated default versions of tools: | ||
- pnpm 7.14.0 -> 7.18.2 | ||
- yarn 3.2.4 -> 3.3.0 | ||
#### 🐞 Fixes | ||
- Fixed an issue where "installing yarn" would constantly show. | ||
- Fixed an issue on Windows where `package.json` and `tsconfig.json` would change newlines | ||
unexpectedly when saving. | ||
- Fixed an issue with `^:deps` that would resolve projects with a non-matching task. | ||
#### ⚙️ Internal | ||
- Updated Rust to v1.66. | ||
## 0.20.3 | ||
#### 🐞 Fixes | ||
- Fixed an issue where Node.js arm64 was no longer working within the toolchain. | ||
## 0.20.2 | ||
#### 🐞 Fixes | ||
- Fixed an issue where env files (`.env`) would not be considered as task inputs. We've also updated | ||
`env_file` to be an implicit input. | ||
- Fixed an issue where changes to a nested `package.json` were not triggering automatic installs. | ||
## 0.20.1 | ||
#### 🐞 Fixes | ||
- Fixed a "byte index is out of bounds" panic when a task has caching disabled. | ||
## 0.20.0 | ||
#### 💥 Breaking | ||
- Moved the `node` and `typescript` settings from `.moon/workspace.yml` to a new config, | ||
`.moon/toolchain.yml`. | ||
- Moved the `workspace.node` and `workspace.typescript` settings in `moon.yml` to `toolchain.node` | ||
and `toolchain.typescript`. | ||
#### 🚀 Updates | ||
- Added `runner.archivableTargets` to `.moon/workspace.yml` to control which targets are cached as | ||
archives. | ||
- Added `vcs.remoteCandidates` to `.moon/workspace.yml` to customize the remotes for git to query | ||
against. | ||
- Added support for `moduleSuffixes` and `moduleDetection` in TypeScript `tsconfig.json` compiler | ||
options. | ||
- Added Google Cloud Build and AWS CodeBuild to the list of CI providers to detect. results. | ||
##### Toolchain | ||
- Implemented a new toolchain, that is more efficient and performant. | ||
- Will now log to the terminal when node, npm, etc, are being installed for the first time. | ||
##### Runner | ||
- Updated the terminal output to include a shortened version of each task hash. | ||
- Reworked the terminal output when running multiple tasks in parallel, or for long-running | ||
processes. | ||
- Implemented a new file tree diffing algorithm that speeds up task output hydration by 10x. | ||
- Updated pnpm to no longer run `pnpm prune` while deduping dependencies, as it produces unexpected | ||
results. | ||
##### Generator | ||
- Added `path_join` and `path_relative` template filters. | ||
- Added pre-defined template variables for the working dir, destination, and workspace root. | ||
#### 🐞 Fixes | ||
- When writing JSON files, it will now respect the `indent_style = tab` setting in the closest | ||
`.editorconfig`. | ||
- When writing YAML files, indentation and formatting will be inferred from the closest | ||
`.editorconfig` as best as possible. | ||
- Fixed an issue where parsing `yarn.lock` would panic on certain Windows machines. | ||
- Fixed an issue where `moon docker prune` would remove required node modules. | ||
#### ⚙️ Internal | ||
- Migrated our json/yaml libraries to the official serde crates. | ||
- Migrated to nextest for better testing performance. | ||
## 0.19.1 | ||
#### 🚀 Updates | ||
- Task `affectedFiles` will also be set via the `MOON_AFFECTED_FILES` env var. | ||
#### 🐞 Fixes | ||
- The runner will no longer attempt to install dependencies if running against affected files. | ||
- Fixed some unexpected panics in relation to non-installed tools. | ||
## 0.19.0 | ||
#### 💥 Breaking | ||
- We've refactored how npm/pnpm/yarn work in the toolchain. Previously, they were installed as | ||
global packages (or via corepack) within the configured `~/.moon/tools/node` version. This | ||
approach worked but was susceptible to collisions, so now, these package managers are installed | ||
individually as their own tools at `~/.moon/tools/npm`, etc. This change should be transparent to | ||
you, but we're documenting it just in case something breaks! | ||
- We've updated the dependency graph so that `InstallDeps` based actions use the task's `platform` | ||
instead of the project's `language` as the tool to install. This allows for granular control at | ||
the task level, and also unlocks the ability for project's to utilize multiple languages in the | ||
future. | ||
#### 🚀 Updates | ||
- When writing JSON files, indentation and formatting will be inferred from the closest | ||
`.editorconfig` as best as possible. | ||
- When applicable, `moon ci` will group and collapse logs based on the current CI/CD environment. | ||
- Updated webhook payloads to contain information about the current CI/CD environment under the | ||
`environment` field. | ||
##### Runner | ||
- Added an `affectedFiles` task option, allowing a filtered list of paths based on affected files to | ||
be passed as command line arguments. Perfect for git hooks! | ||
##### Generator | ||
- When generating files and a JSON or YAML file exists at the destination, you now have the option | ||
of merging files, instead of replacing entirely. | ||
#### 🐞 Fixes | ||
- Fixed an issue where passthrough args were incorrectly being passed to non-primary targets when | ||
using `moon run`. | ||
- Fixed an issue where a root-level project was not being marked as affected based on touched files. | ||
- Fixed an issue where tool version overrides at the project-level were not properly being set, and | ||
configuration that is root-only was being referenced in projects. | ||
- Fixed some CLI arguments that should be ran mutually exclusive with other arguments. | ||
- Task hashes will now properly invalidate if their dependencies hashes have also changed. | ||
#### ⚙️ Internal | ||
- Updated Rust to v1.65. | ||
## 0.18.2 | ||
#### 🐞 Fixes | ||
- Another attempt at fixing missing cache issues. | ||
- Fixed an issue where moon would crash on old git versions (< 2.22.0) attempting to get the branch | ||
name. We encourage everyone to use v2.22 as the git minimum version. | ||
## 0.18.1 | ||
#### 🚀 Updates | ||
- Improved the resolution and hashing of `package.json` dependencies for Yarn and pnpm. | ||
#### 🐞 Fixes | ||
- Fixed an issue where caching would fail on missing `stdout.log` and `stderr.log` files. | ||
## 0.18.0 | ||
#### 🚀 Updates | ||
- Refactored `moon init` heavily for a better onboarding experience. | ||
- Each tool is now configured individually, with its own prompts. Tools can also be skipped. | ||
- Tools can now be initialized _after_ moon already exists, ala `moon init --tool node`. | ||
- Fixed many issues around the templates and rendering. | ||
- Updated the `moon check` command to support an `--all` flag. | ||
- Updated `moon migrate` commands to throw an error if the work tree is dirty. This can be bypassed | ||
with the new `--skipTouchedFilesCheck` option. | ||
- Updated the `projects` setting in `.moon/workspace.yml` to support globs _and_ a map in unison. | ||
- Updated default versions of tools: | ||
- node 16.17.0 -> 18.12.0 | ||
- pnpm 7.12.1 -> 7.14.0 | ||
- yarn 3.2.3 -> 3.2.4 | ||
##### Runner | ||
- Added a `node.binExecArgs` setting to `.moon/workspace.yml`, so that additional `node` CLI | ||
arguments may be passed when executing the binary to run targets. | ||
- Updated the task `command` to default to "noop" when not defined. | ||
- The stdout and stderr of ran targets are now stored as individual log files in | ||
`.moon/cache/states/<project>/<task>`. This allows CI environments to cache them as artifacts, | ||
upload/download them, or simply help developers debug broken jobs. | ||
- Also, these log files are now stored in the output tarballs. | ||
#### ⚙️ Internal | ||
- Timestamps have been updated to UTC _without timezone_. | ||
- Implemented a benchmarking system to start capturing performance changes. | ||
- Improved language and platform interoperability. | ||
- Extended configurations will now be temporarily cached for 4 hours. | ||
## 0.17.0 | ||
#### 💥 Breaking | ||
- Refactored project and task name/id cleaning. Previously, unsupported characters were simply | ||
removed. Instead, we now replace them with dashes for better readability. | ||
- The task `type` in `moon.yml` and `.moon/project.yml` has been renamed to `platform`. | ||
- The `$taskType` token has been renamed to `$taskPlatform`. | ||
#### 🚀 Updates | ||
- All YAML configuration files can now use | ||
[aliases and anchors](https://support.atlassian.com/bitbucket-cloud/docs/yaml-anchors/)! | ||
- The `moon check` command can now use the `--report` option. | ||
##### Tasks | ||
- When defining `deps` within the current project, the `~:` prefix is now optional. For example, | ||
`~:build` can now be written as simply `build`. | ||
##### Generator | ||
- Enum variables can now declare an object form for `values`, so that a custom label can be provided | ||
for each value item. | ||
- Added JSON schema support for the `template.yml` config. | ||
##### Notifier | ||
- Implemented a new service for notifying you about events happening in moon. The first feature in | ||
this service is webhooks! | ||
- Added a new `notifier.webhookUrl` setting to `.moon/workspace.yml`, in which the webhooks endpoint | ||
can be defined. | ||
#### ⚡️ Performance | ||
- Enabled [mimalloc](https://github.com/microsoft/mimalloc). This reduces memory cost and increases | ||
runtime performance. | ||
- Enabled link-time optimization, increases runtime performance. | ||
## 0.16.1 | ||
#### 🐞 Fixes | ||
- Fixed an issue where `moon init` would generate a config with invalid settings. | ||
- Fixed an issue where downloading a tool would fail, but moon would still continue. | ||
## 0.16.0 | ||
#### 🚀 Updates | ||
##### Projects | ||
- Projects can now override the workspace configured Node.js version on a per-project basis using | ||
the new `workspace.node.version` setting in `moon.yml`. However, this does not override the | ||
package manager! | ||
- Package managers workspaces (via `package.json`) are no longer required. When not enabled, or a | ||
project is not within the workspace, it will install dependencies directly within the project | ||
root, and will utilize its own lockfile. | ||
##### TypeScript | ||
- Added a new `typescript.routeOutDirToCache` setting to `.moon/workspace.yml`, that will update the | ||
`outDir` compiler option to route to `.moon/cache/types`. | ||
- Added a new `typescript.syncProjectReferencesToPaths` setting to `.moon/workspace.yml`, that will | ||
map project references to compiler option `paths` aliases. | ||
##### Generator | ||
- Template files can now be suffixed with `.tera` or `.twig` for syntax highlighting. | ||
##### Runner | ||
- The running command will now be displayed when installing dependencies (npm install, etc). This | ||
can be toggled with the `runner.logRunningCommand` setting. | ||
- The dedupe command will now be displayed when running if the `node.dedupeOnLockfileChange` setting | ||
is enabled. | ||
- Added a new `runner.implicitDeps` setting to `.moon/workspace.yml`, that will add task `deps` to | ||
_all_ tasks. | ||
#### 📚 Docs | ||
- Config file settings will now link to their API types. | ||
#### ⚙️ Internal | ||
- We've renamed and restructured the `.moon/cache` directory. If you were relying on any of these | ||
files, you'll need to update your implementation. | ||
- Updated Cargo dependencies. A big change was clap v3 -> v4, so if you encounter any CLI issues, | ||
please report. | ||
## 0.15.0 | ||
#### 🚀 Updates | ||
- When running multiple targets in parallel, we've reworked the output prefix to be uniform amongst | ||
all targets, and to be colored to uniquely identify each target. | ||
- Added a new `moon docker scaffold` command for scaffolding a skeleton workspace for use within | ||
`Dockerfile`s. | ||
- Added a new `moon docker prune` command for pruning the Docker environment for a build/deply. | ||
- Added frontmatter support to all template files. | ||
- Added a `node.yarn.plugins` setting to `.moon/workspace.yml`. | ||
- Updated run reports (via `--report`) to include additional information, like the total duration, | ||
and estimated time savings. | ||
- Updated default versions of tools: | ||
- node 16.16.0 -> 16.17.0 | ||
- npm 8.16.0 -> 8.19.2 | ||
- pnpm 7.9.0 -> 7.12.1 | ||
- yarn 3.2.2 -> 3.2.3 | ||
#### 🐞 Fixes | ||
- Added missing `.npmrc` to the list of pnpm config files. | ||
- Improved the handling of Rust/Go binaries shipped in pnpm node modules. | ||
#### ⚙️ Internal | ||
- Updated Rust to v1.64. | ||
- Windows: | ||
- Will always use PowerShell and avoids `cmd.exe` entirely. | ||
- Reworked commands that run through PowerShell to pass arguments via stdin. | ||
## 0.14.1 | ||
#### 🐞 Fixes | ||
- Fixed an issue where alias warnings were logged while scanning the dependency graph. | ||
- Windows: | ||
- Updated `*.cmd` executions to run with PowerShell when available. This resolves issues around | ||
file paths with special characters or spaces. | ||
## 0.14.0 | ||
#### 🎉 Release | ||
- Released a new GitHub action, | ||
[`moonrepo/run-report-action`](https://github.com/marketplace/actions/moon-ci-run-reports)! | ||
#### 💥 Breaking | ||
- Reworked how caching/hashing works when running in a Docker container/image. If the VCS root | ||
cannot be found, we disable caching. This removes the requirement of mounting a `.git` volume for | ||
Docker. | ||
#### 🚀 Updates | ||
- Added a new `moon generate` command, for code generation and scaffolding. | ||
- Added a `generator` setting to `.moon/workspace.yml`, for controlling aspects of the generator and | ||
its templates. | ||
- Updated the project graph to scan and find implicit dependencies based on language specific | ||
semantics. For example, will determine moon project relationships based on `package.json` names | ||
and dependencies. | ||
- Updated `moon setup` to also install Node.js dependencies. | ||
#### 🐞 Fixes | ||
- Fixed an issue where project and task names were not being cleaned/formatted properly. | ||
## 0.13.0 | ||
#### 💥 Breaking | ||
- The `node` setting in `.moon/workspace.yml` is now optional, allowing repos to opt-out of Node.js | ||
support (in preparation for future languages support). This shouldn't affect you if the setting is | ||
already explicitly defined. | ||
- Renamed `actionRunner` setting to `runner` in `.moon/workspace.yml`. | ||
#### 🚀 Updates | ||
- Added a new `moon check` command, for running all build/test tasks for a project(s). | ||
- Added a `hasher` setting to `.moon/workspace.yml`, for controlling aspects of smart hashing. | ||
- Updated hashing to utilize the resolved version from the lockfile when applicable. | ||
- Updated the action runner to fail when an output is defined and the output does not exist after | ||
being ran. | ||
- Released a new `@moonrepo/types` npm package. | ||
#### ⚙️ Internal | ||
- The `SetupToolchain` action has been updated to be language/platform aware, and as such, was split | ||
into `SetupNodeTool` and `SetupSystemTool`. | ||
- Output is now buffered when running a target. This should reduce tearing and increase performance. | ||
- Upgraded all Cargo dependencies. | ||
## 0.12.1 | ||
#### 🐞 Fixes | ||
- Fixed `init` templates being populated with the wrong default values. | ||
- Fixed the "creation time is not available for the filesystem" error when running in Docker. | ||
## 0.12.0 | ||
#### 💥 Breaking | ||
- The `typescript` setting in `.moon/workspace.yml` is now optional, allowing repos to opt-out of | ||
TypeScript support. This shouldn't affect you if the setting is already explicitly defined. | ||
#### 🚀 Updates | ||
- Added support for Linux ARM GNU (`aarch64-unknown-linux-gnu`). | ||
- Added support for Linux ARM musl (`aarch64-unknown-linux-musl`). | ||
- Added a `workspace.typescript` setting to `moon.yml`, allowing TypeScript support to be toggled | ||
per project. | ||
- Added a `--report` option to the `moon run` command, for generating run reports for debugging. | ||
- Added an `--affected` option to the `moon query projects` command. | ||
- Updated the task `command` to also support inline arguments. You can now merge `command` and | ||
`args` into a single field. | ||
## 0.11.1 | ||
#### 🐞 Fixes | ||
- Fixed an issue where `system` tasks were hashing incorrect contents. | ||
- Fixed an issue where `envFile` is enabled and the relevant `.env` file may not exist in CI. | ||
## 0.11.0 | ||
#### 🚀 Updates | ||
- Added a `moon clean` command for manually clearing the cache. | ||
- Added an `actionRunner.cacheLifetime` setting to `.moon/workspace.yml`, for controlling the stale | ||
cache threshold. | ||
- Added an `envFile` option to tasks, allowing `.env` files to be loaded for environment variables. | ||
- Added a `local` setting to tasks, that marks the task for local development only. | ||
- Updated the `outputStyle` task option with additional variants: `buffer`, `buffer-only-failure`, | ||
`hash`, `none`. | ||
- Updated `moon run` to support running multiple targets concurrently. | ||
#### 🐞 Fixes | ||
- Fixed an issue where output hydration was bypassing "off" cache. | ||
- Fixed an issue where parsing a node module binary would panic. | ||
- Fixed an issue where moon would panic attempting to read non-JS code shipped in node modules (Rust | ||
or Go binaries). | ||
- Fixed an issue where project globs would pickup dot folders (`.git`, `.moon`, etc) or | ||
`node_modules`. | ||
- Fixed an issue where project names were stripping capital letters when using globs. | ||
#### ⚙️ Internal | ||
- Updated Rust to v1.63. | ||
## 0.10.0 | ||
#### 💥 Breaking | ||
- Task outputs are now cached as `.tar.gz` archives, instead of being copied as-is. This shouldn't | ||
affect consumers, but we're raising awareness in case of any platform specific issues. | ||
- Renamed the project-level `project.yml` file to `moon.yml`. The `.moon/project.yml` file has not | ||
changed. | ||
#### 🚀 Updates | ||
- Projects now support language specific aliases, which can be used as a drop-in replacement for | ||
names within targets and dependencies. | ||
- Project and tasks names now support forward slashes (`/`). | ||
- Added a `node.aliasPackageNames` setting to `.moon/workspace.yml`, that aliases the `package.json` | ||
name to the respective project. | ||
- Added an experimental `outputStyle` option to tasks, providing some control of how stdout/stderr | ||
is handled. | ||
- Added a `runDepsInParallel` option to tasks, that controls whether task dependencies run in | ||
parallel or serial (in order). | ||
- Updated tasks to automatically detect their `type` (when undefined) based on their defined | ||
`command`. Will attempt to match against common system commands, like `rm`, `mkdir`, etc. | ||
- When in CI, Node.js will not install dependencies if they were already installed before moon runs. | ||
This should avoid unintentional and unnecessary double installs. | ||
- Updated default versions of tools: | ||
- node 16.15.0 -> 16.16.0 | ||
- npm 8.10.0 -> 8.16.0 | ||
- pnpm 7.1.5 -> 7.9.0 | ||
- yarn 3.2.1 -> 3.2.2 | ||
#### 🐞 Fixes | ||
- Fixed some issues where task outputs were not being hydrated based on the state of the | ||
target/project. | ||
- Fixed an issue where task outputs were not considered for hash generation. | ||
## 0.9.1 | ||
#### 🐞 Fixes | ||
- Fixed an issue where a root-level project cannot be configured with a glob. Updated `projects` | ||
glob matching to support `'.'`. | ||
- Fixed an issue where moon was setup in a sub-folder. Updated git/svn to traverse upwards to find | ||
the applicable root (`.git`, etc). | ||
## 0.9.0 | ||
#### 💥 Breaking | ||
We've refactored our smart hashing layer to take into account different platforms (a task's type) in | ||
an effort to be more accurate, which now results in different hashes for the same build. Any | ||
previous builds are no longer valid and can be removed. | ||
#### 🚀 Updates | ||
- Updated task `type` to be automatically inferred when the value is unknown, based on the owning | ||
project's `language` (`javascript` = node, `bash` = system, etc). | ||
- Updated `dependsOn` in `project.yml` to support an object form, where a scope (production, | ||
development, peer) can also be defined. This maps to the appropriate field in `package.json` when | ||
syncing. | ||
- Added `batch` as a supported value for the project `language` setting (Windows counter-part to | ||
`bash`). | ||
- Added a `cache` option to tasks, which will disable smart hashing and output caching. | ||
- Added a `node.dependencyVersionFormat` setting to `.moon/workspace.yml`, to customize the version | ||
format when syncing dependencies. | ||
- Added environment variable support to task `inputs` and `actionRunner.implicitInputs`, in the | ||
format of `$ENV_VAR`. | ||
#### 🐞 Fixes | ||
- Fixed an issue where pnpm didn't work with `node-linker=isolated` for nested node modules. | ||
- Fixed an issue where failing processes would display an empty error message. | ||
#### ⚙️ Internal | ||
- Outputs are now copied to `.moon/cache/outputs` instead of being hardlinked. | ||
- Package binaries are now resolved to their canonical path when a symlink. | ||
### 0.8.1 | ||
#### 🐞 Fixes | ||
- Fixed a crash when `node.packageManager` was set to "pnpm" or "yarn" but `node.pnpm` or | ||
`node.yarn` fields were not set. | ||
## 0.8.0 | ||
This release was largely focused on interoperability with the Node.js ecosystem, specifically | ||
`package.json` scripts. It's the first step in many steps, so stay tuned! | ||
#### 🚀 Updates | ||
- Added a special `noop` command for tasks. | ||
- Added a `moon migrate from-package-json` command for migrating `package.json` scripts to | ||
`project.yml` tasks. | ||
- Added a `moon sync` command for manually syncing all projects in the workspace to a healthy state. | ||
- Added a `node.inferTasksFromScripts` setting to `.moon/workspace.yml`, that will automatically | ||
infer tasks from `package.json` scripts (with caveats). | ||
- Added aliases for popular commands: | ||
- `moon r` -> `moon run` | ||
- `moon p` -> `moon project` | ||
- `moon pg` -> `moon project-graph` | ||
- `moon dg` -> `moon dep-graph` | ||
#### 🐞 Fixes | ||
- Fixed an issue where files being hashed with git were not being cached accordingly. | ||
#### ⚙️ Internal | ||
- Runfiles are no longer cleaned up when running tasks. | ||
- Reworked `package.json` and `tsconfig.json` handling to avoid race conditions. | ||
## 0.7.0 | ||
#### 💥 Breaking | ||
- The `language` and `type` settings in `project.yml` now default to "unknown" when the setting is | ||
not defined, or the config does not exist. However, the language will also now be inferred | ||
(below). | ||
#### 🚀 Updates | ||
- Updated project `language` to be automatically inferred when the value is unknown, based on the | ||
existence of config files (`package.json` = javascript, `tsconfig.json` = typescript). | ||
- Updated the `InstallNodeDeps` action to install dependencies when a `package.json` change is | ||
detected. | ||
- Added a `moon dep-graph` command for displaying the entire dependency graph in DOT format. | ||
- Added `--language` and `--type` filter options to `moon query projects`. | ||
- Added `$language`, `$projectType`, and `$taskType` token variables. | ||
- Added `dev` as a non-CI task identifier (alongside `start` and `serve`). | ||
- Token variables can now be used within task `inputs`. | ||
- Multiple token variables can now be used within the same string. | ||
#### 🐞 Fixes | ||
- Fixed an issue where package binaries would not execute on pnpm. | ||
## 0.6.0 | ||
#### 🚀 Updates | ||
- Added a new `@group` token that can be used be task `args` and `inputs`. | ||
- Added a `moon query` command for querying information about moon, the environment, and more. | ||
- To start, `moon query touched-files` can be used to query touched files. The same files | ||
`moon ci` and `moon run` use. | ||
- Also `moon query projects` can be used to query about projects in the project graph. | ||
- Added `bash` as a supported value for the project `language` setting. | ||
- Added `typescript.createMissingConfig` and `typescript.rootOptionsConfigFileName` settings to | ||
`.moon/workspace.yml`. | ||
- Updated TypeScript project reference syncing to automatically create missing `tsconfig.json`s. | ||
- Updated `moon setup` and `moon teardown` to display spinners while running. | ||
#### 🐞 Fixes | ||
- Fixed an issue with a globally installed moon not being executable in PowerShell. | ||
- Fixed an issue with empty files being passed to `git hash-object`. | ||
- Fixed an issue where a `git merge-base` could not be resolved when base and head are provided. | ||
#### ⚙️ Internal | ||
- Updated Rust to v1.62. | ||
- Refactored our action runner to support additional languages in the future. | ||
- Refactored Windows to execute package binaries with `node.exe` directly, instead of with | ||
`cmd.exe` + the `.bin/*.cmd` file. | ||
## 0.5.0 | ||
#### 🚀 Updates | ||
- Added caching to our VCS layer which should greatly reduce the amount of `git` commands being | ||
executed. | ||
- Updated `moon init` to detect `vcs.manager` and `vcs.defaultBranch` from the environment. | ||
#### ⚙️ Internal | ||
- We now detect the current Windows terminal using the `COMSPEC` environment variable, instead of | ||
defaulting to `cmd.exe`. | ||
- Improved our configuration layer so that error messages include more metadata. | ||
- Added `#[track_caller]` to more easily diagnose panics. | ||
### 0.4.1 | ||
#### 🐞 Fixes | ||
- Fixed logs unintentionally logging non-moon messages. | ||
## 0.4.0 | ||
#### 🚀 Updates | ||
- Added an `extends` setting to `.moon/workspace.yml` and `.moon/project.yml`. | ||
- Added a `actionRunner.logRunningCommand` setting to `.moon/workspace.yml` for logging the task | ||
command being ran. | ||
- Added a global `--logFile` option to the CLI. Also supports a new `MOON_LOG_FILE` environment | ||
variable. | ||
- When targets are being ran in parallel, their output is now prefixed with the target name to | ||
differentiate. This is currently only enabled in CI. | ||
#### 🐞 Fixes | ||
- More fixes around terminal color output and handling. | ||
#### 📚 Documentation | ||
- Add "released in version" badges/labels to new features across all docs. | ||
#### ⚙️ Internal | ||
- Temporarily disabling offline internet checks as it has issues with VPNs. Will revisit in the | ||
future. | ||
### 0.3.1 | ||
#### 🐞 Fixes | ||
- Fixed an issue where tasks referencing workspace relative files were not being marked as affected. | ||
- Fixed some issues during `moon init` config generation. | ||
- Improved offline checks by also verifying against Google's DNS. | ||
## 0.3.0 | ||
#### 💥 Breaking | ||
- Moved the `project.type` setting in `project.yml` to the top-level. Is now simply `type`. | ||
#### 🚀 Updates | ||
- Added support for a list of globs when configuring the `projects` setting in | ||
`.moon/workspace.yml`. | ||
- Added a `actionRunner.inheritColorsForPipedTasks` setting to `.moon/workspace.yml` for inheriting | ||
terminal colors for piped tasks. | ||
- Added a `language` setting to `project.yml` for defining the primary programming language of a | ||
project. | ||
- Added a global `--color` option to the CLI. Also supports a new `MOON_COLOR` environment variable. | ||
#### 🐞 Fixes | ||
- Fixed many issues around terminal color output and handling. | ||
## 0.2.0 | ||
#### 🚀 Updates | ||
- Added support for macOS silicon (`aarch64-apple-darwin`). | ||
- Added support for Linux musl (`x86_64-unknown-linux-musl`). | ||
- Added support for the `MOON_LOG` environment variable. | ||
- Added duration timestamps to all ran tasks in the terminal. | ||
- Updated the JSON schemas to use the new package manager versions. | ||
- Updated git file diffing to use `git merge-base` as the base reference. | ||
- Updated `moon run` to exit early if there are no tasks for the provided target. | ||
- Hashing will now ignore files that matched a pattern found in the root `.gitignore`. | ||
- Passthrough args can now be defined for multi-target runs (`:target`). | ||
#### 🐞 Fixes | ||
- Fixed an issue with the `.moon/workspace.yml` template being generating with invalid whitespace | ||
during `moon init`. |
{ | ||
"name": "@moonrepo/cli", | ||
"version": "1.8.3", | ||
"version": "1.9.0", | ||
"description": "moon command line and core system.", | ||
@@ -32,10 +32,10 @@ "keywords": [ | ||
"optionalDependencies": { | ||
"@moonrepo/core-linux-arm64-gnu": "^1.8.3", | ||
"@moonrepo/core-linux-arm64-musl": "^1.8.3", | ||
"@moonrepo/core-linux-x64-gnu": "^1.8.3", | ||
"@moonrepo/core-linux-x64-musl": "^1.8.3", | ||
"@moonrepo/core-macos-arm64": "^1.8.3", | ||
"@moonrepo/core-macos-x64": "^1.8.3", | ||
"@moonrepo/core-windows-x64-msvc": "^1.8.3" | ||
"@moonrepo/core-linux-arm64-gnu": "^1.9.0", | ||
"@moonrepo/core-linux-arm64-musl": "^1.9.0", | ||
"@moonrepo/core-linux-x64-gnu": "^1.9.0", | ||
"@moonrepo/core-linux-x64-musl": "^1.9.0", | ||
"@moonrepo/core-macos-arm64": "^1.9.0", | ||
"@moonrepo/core-macos-x64": "^1.9.0", | ||
"@moonrepo/core-windows-x64-msvc": "^1.9.0" | ||
} | ||
} |
@@ -86,4 +86,3 @@ # @moonrepo/cli | ||
distinct dependency trees. | ||
- **Ownership metadata** - Declare an owner, maintainers, support channels, and more, for LDAP or | ||
another integration. | ||
- **Code ownership** - Declare owners, maintainers, support channels, and more. Generate CODEOWNERS. | ||
@@ -106,1 +105,2 @@ #### Orchestration | ||
successful... or are not. | ||
- **Git hooks** - Manage Git hooks to enforce workflows and requirements for contributors. |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
19775