docs/CHANGELOG_V0.md
moon binary wouldn't bubble up the
correct exit code.inputs declared as literal file paths will now be logged to the console as a warning when
they do not exist during hashing.cache disabled were considered empty hashes when declared as a
dependency of another task.package.json workspaces would sometimes fail.moon docker setup couldn't find the manifest file for staged builds.MOON_DEBUG_PROCESS_ENV env var for debugging processes.~/.proto from ~/.moon. This should be a transparent change, but at
minimum your tools will be re-downloaded and installed.moon docker setup command for efficiently installing project dependencies.moon query hash command for inspecting the hash manifest.moon query hash-diff command for diffing 2 hashes..prototools into account.git status files when running in CI.!) weren't being handled
correctly.package.json parsing.browser field in package.json would fail to parse.moon upgrade would not report a newer available version.outputs were not being included in the hashed tarball.--force flag to moon run that will bypass affected checks. Useful for always forcing a
run in CI.moon init would panic while checking for a newer version.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.toolchain.typescript in moon.yml.language setting in moon.yml to support any custom language..).context to pipeline.started and pipeline.finished events.moon query projects --affected would hang indefinitely waiting for stdin.projects globs wouldn't immediately invalidate the cache.moon upgrade command to upgrade moon to the latest version.moon bin failing, even when a tool has been configured.Remote caching is now publicly available through our new service moonbase! Sign up for a free account and immediately see the benefits in your CI pipelines.
moon query projects JSON output behind a --json flag.moon query touched-files JSON output behind a --json flag.moon completions command for generating shell completions.hasher.walkStrategy setting to .moon/workspace.yml.moon query projects and moon query touched-files default output to be easily readable
and parseable.platform setting to moon.yml, allowing the default platform to be defined for all
tasks.outputs to support token functions (@group, @globs, etc).--interactive flag to moon run to force a target to run in interactive mode.local to always run in interactive mode.package.json or tsconfig.json with no changes,
causing modified events to trigger.comparisonEstimate block to run reports.baselineDuration and estimatedSavings to pipeline.finished events.git ls-files --deduplicate wasn't available on older git versions.node install -> npm install.moon/project.yml to .moon/tasks.yml.runner.implicitDeps from .moon/workspace.yml to .moon/tasks.yml as implicitDeps.runner.implicitInputs from .moon/workspace.yml to .moon/tasks.yml as implicitInputs.language and type.
.moon/tasks/<language>.yml and .moon/tasks/<language>-<type>.yml configuration
files.env setting to moon.yml.outputs to support globs.moon migrate from-turborepo to preserve globs in outputs.pnpm dedupe command when the version is >= 7.26.0.inputs not using **/* would crash git.runner.* webhook events to pipeline.*.--upstream option to --remote.--report option from moon check and moon run commands. Reports are now always
created.moon migrate from-turborepo command to migrate from Turborepo to moon.moon docker commands to take into account other programming languages when scaffolding
files.versionConstraint setting to .moon/workspace.yml that enforces a requirement on the
running moon binary.--concurrency option to all moon commands, allowing the thread count to be
customized.project fields in moon.yml to be optional, excluding description.~/.moon is deleted, but local caching isn't aware of it missing and fails
to run a target.runFromWorkspaceRoot wasn't working correctly for node module binaries.--log, etc) to be able to passed anywhere in the command line.
They no longer have to be passed before the command.platform was being incorrectly merged when inheriting global
tasks.--json flag to moon dep-graph and moon project-graph that will return the nodes and
edges data as JSON.moon project-graph that would not include nodes without edges.@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.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.--minimal to moon init for quick scaffolding and prototyping.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.--updateCache (-u) to moon check and moon run that force updates the cache and
bypasses any existing cache.args and env as valid values for the affectedFiles task option.moon run and moon query touched-files to support a list of --status options.package.json and tsconfig.json would change newlines
unexpectedly when saving.^:deps that would resolve projects with a non-matching task..env) would not be considered as task inputs. We've also updated
env_file to be an implicit input.package.json were not triggering automatic installs.node and typescript settings from .moon/workspace.yml to a new config,
.moon/toolchain.yml.workspace.node and workspace.typescript settings in moon.yml to toolchain.node
and toolchain.typescript.runner.archivableTargets to .moon/workspace.yml to control which targets are cached as
archives.vcs.remoteCandidates to .moon/workspace.yml to customize the remotes for git to query
against.moduleSuffixes and moduleDetection in TypeScript tsconfig.json compiler
options.pnpm prune while deduping dependencies, as it produces unexpected
results.path_join and path_relative template filters.indent_style = tab setting in the closest
.editorconfig..editorconfig as best as possible.yarn.lock would panic on certain Windows machines.moon docker prune would remove required node modules.affectedFiles will also be set via the MOON_AFFECTED_FILES env var.~/.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!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..editorconfig as best as possible.moon ci will group and collapse logs based on the current CI/CD environment.environment field.affectedFiles task option, allowing a filtered list of paths based on affected files to
be passed as command line arguments. Perfect for git hooks!moon run.package.json dependencies for Yarn and pnpm.stdout.log and stderr.log files.moon init heavily for a better onboarding experience.
moon init --tool node.moon check command to support an --all flag.moon migrate commands to throw an error if the work tree is dirty. This can be bypassed
with the new --skipTouchedFilesCheck option.projects setting in .moon/workspace.yml to support globs and a map in unison.node.binExecArgs setting to .moon/workspace.yml, so that additional node CLI
arguments may be passed when executing the binary to run targets.command to default to "noop" when not defined..moon/cache/states/<project>/<task>. This allows CI environments to cache them as artifacts,
upload/download them, or simply help developers debug broken jobs.
type in moon.yml and .moon/project.yml has been renamed to platform.$taskType token has been renamed to $taskPlatform.moon check command can now use the --report option.deps within the current project, the ~: prefix is now optional. For example,
~:build can now be written as simply build.values, so that a custom label can be provided
for each value item.template.yml config.notifier.webhookUrl setting to .moon/workspace.yml, in which the webhooks endpoint
can be defined.moon init would generate a config with invalid settings.workspace.node.version setting in moon.yml. However, this does not override the
package manager!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.routeOutDirToCache setting to .moon/workspace.yml, that will update the
outDir compiler option to route to .moon/cache/types.typescript.syncProjectReferencesToPaths setting to .moon/workspace.yml, that will
map project references to compiler option paths aliases..tera or .twig for syntax highlighting.runner.logRunningCommand setting.node.dedupeOnLockfileChange setting
is enabled.runner.implicitDeps setting to .moon/workspace.yml, that will add task deps to
all tasks..moon/cache directory. If you were relying on any of these
files, you'll need to update your implementation.moon docker scaffold command for scaffolding a skeleton workspace for use within
Dockerfiles.moon docker prune command for pruning the Docker environment for a build/deply.node.yarn.plugins setting to .moon/workspace.yml.--report) to include additional information, like the total duration,
and estimated time savings..npmrc to the list of pnpm config files.cmd.exe entirely.*.cmd executions to run with PowerShell when available. This resolves issues around
file paths with special characters or spaces.moonrepo/run-report-action!.git volume for
Docker.moon generate command, for code generation and scaffolding.generator setting to .moon/workspace.yml, for controlling aspects of the generator and
its templates.package.json names
and dependencies.moon setup to also install Node.js dependencies.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.actionRunner setting to runner in .moon/workspace.yml.moon check command, for running all build/test tasks for a project(s).hasher setting to .moon/workspace.yml, for controlling aspects of smart hashing.@moonrepo/types npm package.SetupToolchain action has been updated to be language/platform aware, and as such, was split
into SetupNodeTool and SetupSystemTool.init templates being populated with the wrong default values.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.aarch64-unknown-linux-gnu).aarch64-unknown-linux-musl).workspace.typescript setting to moon.yml, allowing TypeScript support to be toggled
per project.--report option to the moon run command, for generating run reports for debugging.--affected option to the moon query projects command.command to also support inline arguments. You can now merge command and
args into a single field.system tasks were hashing incorrect contents.envFile is enabled and the relevant .env file may not exist in CI.moon clean command for manually clearing the cache.actionRunner.cacheLifetime setting to .moon/workspace.yml, for controlling the stale
cache threshold.envFile option to tasks, allowing .env files to be loaded for environment variables.local setting to tasks, that marks the task for local development only.outputStyle task option with additional variants: buffer, buffer-only-failure,
hash, none.moon run to support running multiple targets concurrently..git, .moon, etc) or
node_modules..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.project.yml file to moon.yml. The .moon/project.yml file has not
changed./).node.aliasPackageNames setting to .moon/workspace.yml, that aliases the package.json
name to the respective project.outputStyle option to tasks, providing some control of how stdout/stderr
is handled.runDepsInParallel option to tasks, that controls whether task dependencies run in
parallel or serial (in order).type (when undefined) based on their defined
command. Will attempt to match against common system commands, like rm, mkdir, etc.projects
glob matching to support '.'..git, etc).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.
type to be automatically inferred when the value is unknown, based on the owning
project's language (javascript = node, bash = system, etc).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.batch as a supported value for the project language setting (Windows counter-part to
bash).cache option to tasks, which will disable smart hashing and output caching.node.dependencyVersionFormat setting to .moon/workspace.yml, to customize the version
format when syncing dependencies.inputs and actionRunner.implicitInputs, in the
format of $ENV_VAR.node-linker=isolated for nested node modules..moon/cache/outputs instead of being hardlinked.node.packageManager was set to "pnpm" or "yarn" but node.pnpm or
node.yarn fields were not set.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!
noop command for tasks.moon migrate from-package-json command for migrating package.json scripts to
project.yml tasks.moon sync command for manually syncing all projects in the workspace to a healthy state.node.inferTasksFromScripts setting to .moon/workspace.yml, that will automatically
infer tasks from package.json scripts (with caveats).moon r -> moon runmoon p -> moon projectmoon pg -> moon project-graphmoon dg -> moon dep-graphpackage.json and tsconfig.json handling to avoid race conditions.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).language to be automatically inferred when the value is unknown, based on the
existence of config files (package.json = javascript, tsconfig.json = typescript).InstallNodeDeps action to install dependencies when a package.json change is
detected.moon dep-graph command for displaying the entire dependency graph in DOT format.--language and --type filter options to moon query projects.$language, $projectType, and $taskType token variables.dev as a non-CI task identifier (alongside start and serve).inputs.@group token that can be used be task args and inputs.moon query command for querying information about moon, the environment, and more.
moon query touched-files can be used to query touched files. The same files
moon ci and moon run use.moon query projects can be used to query about projects in the project graph.bash as a supported value for the project language setting.typescript.createMissingConfig and typescript.rootOptionsConfigFileName settings to
.moon/workspace.yml.tsconfig.jsons.moon setup and moon teardown to display spinners while running.git hash-object.git merge-base could not be resolved when base and head are provided.node.exe directly, instead of with
cmd.exe + the .bin/*.cmd file.git commands being
executed.moon init to detect vcs.manager and vcs.defaultBranch from the environment.COMSPEC environment variable, instead of
defaulting to cmd.exe.#[track_caller] to more easily diagnose panics.extends setting to .moon/workspace.yml and .moon/project.yml.actionRunner.logRunningCommand setting to .moon/workspace.yml for logging the task
command being ran.--logFile option to the CLI. Also supports a new MOON_LOG_FILE environment
variable.moon init config generation.project.type setting in project.yml to the top-level. Is now simply type.projects setting in
.moon/workspace.yml.actionRunner.inheritColorsForPipedTasks setting to .moon/workspace.yml for inheriting
terminal colors for piped tasks.language setting to project.yml for defining the primary programming language of a
project.--color option to the CLI. Also supports a new MOON_COLOR environment variable.aarch64-apple-darwin).x86_64-unknown-linux-musl).MOON_LOG environment variable.git merge-base as the base reference.moon run to exit early if there are no tasks for the provided target..gitignore.:target)..moon/workspace.yml template being generating with invalid whitespace
during moon init.