moon

A task runner and repo management tool for the web ecosystem, written in Rust.

MIT License

Downloads
294.4K
Stars
2.6K
Committers
50

Bot releases are visible (Hide)

moon - @moonrepo/[email protected]

Published by github-actions[bot] almost 2 years ago

🐞 Fixes

  • Fixed a "byte index is out of bounds" panic when a task has caching disabled.
moon - @moonrepo/[email protected]

Published by github-actions[bot] almost 2 years ago

💥 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.
moon - @moonrepo/[email protected]

Published by github-actions[bot] almost 2 years ago

🚀 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.
moon - @moonrepo/[email protected]

Published by github-actions[bot] almost 2 years ago

💥 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.
moon - @moonrepo/[email protected]

Published by github-actions[bot] almost 2 years ago

🐞 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.
moon - @moonrepo/[email protected]

Published by github-actions[bot] almost 2 years ago

🚀 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.
moon - @moonrepo/[email protected]

Published by github-actions[bot] almost 2 years ago

🚀 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.
moon - @moonrepo/[email protected]

Published by github-actions[bot] about 2 years ago

💥 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.
moon - @moonrepo/[email protected]

Published by github-actions[bot] about 2 years ago

🐞 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.
moon - @moonrepo/[email protected]

Published by github-actions[bot] about 2 years ago

🚀 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.
moon - @moonrepo/[email protected]

Published by github-actions[bot] about 2 years ago

🚀 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.
moon - @moonrepo/[email protected]

Published by github-actions[bot] about 2 years ago

🐞 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.
moon - @moonrepo/[email protected]

Published by github-actions[bot] about 2 years ago

🎉 Release

💥 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.
moon - @moonrepo/[email protected]

Published by github-actions[bot] about 2 years ago

💥 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 SetupNodeToolchain and SetupSystemToolchain.
  • Output is now buffered when running a target. This should reduce tearing and increase performance.
  • Upgraded all Cargo dependencies.
moon - @moonrepo/[email protected]

Published by github-actions[bot] about 2 years ago

🐞 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.
moon - @moonrepo/[email protected]

Published by milesj about 2 years ago

💥 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 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.
moon - @moonrepo/[email protected]

Published by github-actions[bot] about 2 years ago

🐞 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.
moon - @moonrepo/[email protected]

Published by github-actions[bot] about 2 years ago

🚀 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.
moon - @moonrepo/[email protected]

Published by github-actions[bot] about 2 years ago

💥 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.
moon - @moonrepo/[email protected]

Published by github-actions[bot] about 2 years ago

🐞 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).
Package Rankings
Top 3.41% on Npmjs.org
Badges
Extracted from project README
Contributors