Skip to content

Releases: moonrepo/moon

@moonrepo/[email protected]

18 Nov 05:56
Compare
Choose a tag to compare

🚀 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.

@moonrepo/[email protected]

14 Nov 19:35
Compare
Choose a tag to compare

💥 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

  • 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
    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.

@moonrepo/[email protected]

10 Nov 04:40
Compare
Choose a tag to compare

🐞 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]

01 Nov 18:58
Compare
Choose a tag to compare

🚀 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.

@moonrepo/[email protected]

31 Oct 19:40
Compare
Choose a tag to compare

🚀 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.

@moonrepo/[email protected]

20 Oct 17:50
Compare
Choose a tag to compare

💥 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!
  • 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. This reduces memory cost and increases runtime performance.
  • Enabled link-time optimization, increases runtime performance.

@moonrepo/[email protected]

08 Oct 23:37
Compare
Choose a tag to compare

🐞 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]

06 Oct 23:36
Compare
Choose a tag to compare

🚀 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.

@moonrepo/[email protected]

26 Sep 21:52
Compare
Choose a tag to compare

🚀 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
    Dockerfiles.
  • 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.

@moonrepo/[email protected]

15 Sep 01:32
Compare
Choose a tag to compare

🐞 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.