Releases: moonrepo/moon
Releases · moonrepo/moon
@moonrepo/[email protected]
🚀 Updates
- Task
affectedFiles
will also be set via theMOON_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.
@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/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'splatform
instead of the project'slanguage
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
- Remote caching is now available for beta sign ups!
- 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
- 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.json
dependencies for Yarn and pnpm.
🐞 Fixes
- Fixed an issue where caching would fail on missing
stdout.log
andstderr.log
files.
@moonrepo/[email protected]
🚀 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 additionalnode
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.
@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
type
inmoon.yml
and.moon/project.yml
has been renamed toplatform
. - The
$taskType
token has been renamed to$taskPlatform
.
🚀 Updates
- All YAML configuration files can now use aliases and 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 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.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. This reduces memory cost and increases runtime performance.
- Enabled link-time optimization, increases runtime performance.
@moonrepo/[email protected]
🐞 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.
@moonrepo/[email protected]
🚀 Updates
Projects
- Projects can now override the workspace configured Node.js version on a per-project basis using
the newworkspace.node.version
setting 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.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 optionpaths
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 therunner.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 taskdeps
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.
@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 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.
- 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
*.cmd
executions to run with PowerShell when available. This resolves issues around
file paths with special characters or spaces.
- Updated