Releases: moonrepo/moon
Releases Β· moonrepo/moon
@moonrepo/[email protected]
π₯ 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/nodeversion. 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
InstallDepsbased actions use the task'splatform
instead of the project'slanguageas 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
- Remote caching is now available for beta sign ups!
- When writing JSON files, indentation and formatting will be inferred from the closest
.editorconfigas best as possible. - When applicable,
moon ciwill 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
environmentfield.
Runner
- Added an
affectedFilestask option, allowing a filtered list of paths based on affected files to
be passed as command line arguments. Perfect for git hooks!
Generator
- Updated the generator to now support merging JSON and YAML files when it exists in both the
destination and source.
π Fixes
- Fixed an issue where passthrough args were incorrectly being passed to non-primary targets when
usingmoon 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.
@moonrepo/[email protected]
π 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.
@moonrepo/[email protected]
π Updates
- Improved the resolution and hashing of
package.jsondependencies for Yarn and pnpm.
π Fixes
- Fixed an issue where caching would fail on missing
stdout.logandstderr.logfiles.
@moonrepo/[email protected]
π Updates
- Refactored
moon initheavily 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 checkcommand to support an--allflag. - Updated
moon migratecommands to throw an error if the work tree is dirty. This can be bypassed
with the new--skipTouchedFilesCheckoption. - Updated the
projectssetting in.moon/workspace.ymlto 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.binExecArgssetting to.moon/workspace.yml, so that additionalnodeCLI
arguments may be passed when executing the binary to run targets. - Updated the task
commandto 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.
@moonrepo/[email protected]
π₯ 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
typeinmoon.ymland.moon/project.ymlhas been renamed toplatform. - The
$taskTypetoken has been renamed to$taskPlatform.
π Updates
- All YAML configuration files can now use aliases and anchors!
- The
moon checkcommand can now use the--reportoption.
Tasks
- When defining
depswithin the current project, the~:prefix is now optional. For example,
~:buildcan now be written as simplybuild.
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.ymlconfig.
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.webhookUrlsetting to.moon/workspace.yml, in which the webhooks endpoint
can be defined.
β‘οΈ Performance
- Enabled mimalloc. This reduces memory cost and increases runtime performance.
- Enabled link-time optimization, increases runtime performance.
@moonrepo/[email protected]
π Fixes
- Fixed an issue where
moon initwould generate a config with invalid settings. - Fixed an issue where downloading a tool would fail, but moon would still continue.
@moonrepo/[email protected]
π Updates
Projects
- Projects can now override the workspace configured Node.js version on a per-project basis using
the newworkspace.node.versionsetting inmoon.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.routeOutDirToCachesetting to.moon/workspace.yml, that will update the
outDircompiler option to route to.moon/cache/types. - Added a new
typescript.syncProjectReferencesToPathssetting to.moon/workspace.yml, that will
map project references to compiler optionpathsaliases.
Generator
- Template files can now be suffixed with
.teraor.twigfor syntax highlighting.
Runner
- The running command will now be displayed when installing dependencies (npm install, etc). This
can be toggled with therunner.logRunningCommandsetting. - The dedupe command will now be displayed when running if the
node.dedupeOnLockfileChangesetting
is enabled. - Added a new
runner.implicitDepssetting to.moon/workspace.yml, that will add taskdepsto
all tasks.
π Docs
- Config file settings will now link to their API types.
βοΈ Internal
- We've renamed and restructured the
.moon/cachedirectory. 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.
@moonrepo/[email protected]
π 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 scaffoldcommand for scaffolding a skeleton workspace for use within
Dockerfiles. - Added a new
moon docker prunecommand for pruning the Docker environment for a build/deply. - Added frontmatter support to all template files.
- Added a
node.yarn.pluginssetting 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
.npmrcto 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.exeentirely. - Reworked commands that run through PowerShell to pass arguments via stdin.
- Will always use PowerShell and avoids
@moonrepo/[email protected]
π Fixes
- Fixed an issue where alias warnings were logged while scanning the dependency graph.
- Windows:
- Updated
*.cmdexecutions to run with PowerShell when available. This resolves issues around
file paths with special characters or spaces.
- Updated
@moonrepo/[email protected]
π Release
- Released a new GitHub action,
moonrepo/run-report-action!
π₯ 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.gitvolume for
Docker.
π Updates
- Added a new
moon generatecommand, for code generation and scaffolding. - Added a
generatorsetting 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 onpackage.jsonnames
and dependencies. - Updated
moon setupto also install Node.js dependencies.
π Fixes
- Fixed an issue where project and task names were not being cleaned/formatted properly.