Configuration Overview
Every project requires a melos.yaml
project in the root. The below outlines
all the configurable fields and their purpose.
name
required
The name of this project, using for display purposes within IO environments and IDEs.
name: My Awesome Project
repository
The URL of where the git repository, which contains this project, is centrally hosted.
Supported hosts:
- GitHub
- GitLab (https://gitlab.com)
repository: https://github.com/invertase/melos
sdkPath
Path to the Dart/Flutter SDK that should be used.
Relative paths are resolved relative to the melos.yaml
file.
To use the system-wide SDK, provide the special value "auto".
If the SDK path is specified though multiple mechanisms, the precedence from highest to lowest is:
--sdk-path
global command line optionMELOS_SDK_PATH
environment variablesdkPath
inmelos.yaml
sdkPath: .fvm/flutter_sdk
packages
required
A list of paths to local packages that are included in the Melos workspace. Each entry can be specific path or a glob pattern.
packages:
# e.g. include all packages inside the `packages` directory at any level
- packages/**
# e.g. include all packages inside the `packages` directory that are direct children
- packages/*
# e.g. include the package in the workspace root
- .
You can also reduce the scope of packages on a per-command basis via the
--scope
filter flag.
ignore
A list of paths to local packages that are excluded from the Melos workspace. Each entry can be specific path or a glob pattern.
ignore:
# e.g. ignore example apps
- "packages/**/example"
You can also expand the scope of ignored packages on a per-command basis via the
--scope
filter flag.
ide/intellij
Whether to generate IntelliJ IDEA config files to improve the developer experience when working in a Melos workspace.
The default is true
.
ide:
intellij: false
scripts
optional
Define custom scripts that can be executed in the workspace via the melos run
command.
Learn more about defining scripts here.
command
Configuration relating to specific Melos commands such as versioning.
command/bootstrap/usePubspecOverrides
Whether to use pubspec_overrides.yaml
for overriding workspace dependencies during development.
Enabling this option requires Dart 2.17.0 or greater.
When this option is enabled, Melos will generate a pubspec_overrides.yaml
file in the root of
every package during bootstrapping. This file should not be tracked in version control and should
be added to .gitignore
.
This mechanism has the advantage that it does not conflict with other tooling such as the dart
and flutter
tools and IDE plugins, compared to the original mechanism used to link local packages.
A caveat is that because of a bug in pub
, whose fix is not yet in the stable channel, publishing
of packages cannot be performed while pubspec_overrides.yaml
exists. A workaround is to run
melos clean
before melos publish
, which removes pubspec_overrides.yaml
s if they were
generated by Melos.
command/bootstrap/runPubGetInParallel
Whether to run pub get
in parallel during bootstrapping.
The default is true
.
command/bootstrap/runPubGetOffline
Whether to attempt to run pub get
in offline mode during bootstrapping.
Useful in closed network environments with pre-populated pubcaches.
The default is false
.
command/version/message
A template for the commit message, that is generated by melos version
.
Templates must use mustache syntax and have the following variables available:
new_package_versions
: A list of the versioned packages and their new versions.
The default is:
chore(release): publish packages
{new_package_versions}
command:
version:
message: |
chore: cut package releases 🎉
{new_package_versions}
command/version/branch
If specified, prevents melos version
from being used inside branches other than the one specified.
command:
version:
branch: main
command/version/includeScopes
Whether to include conventional commit scopes in the generated CHANGELOG.md.
command:
version:
includeScopes: true
command/version/includeCommitId
Whether to add short commit id (no links) in the CHANGELOG.md, that is generated by melos version
.
command:
version:
includeCommitId: true
command/version/linkToCommits
Whether to add links to commits in the CHANGELOG.md, that is generated by melos version
.
Enabling this option, requires repository
to be specified.
command:
version:
linkToCommits: true
command/version/workspaceChangelog
Whether to additionally build a CHANGELOG.md at the root of the workspace when running melos version
.
command:
version:
workspaceChangelog: true
command/version/updateGitTagRefs
When running melos version
this option will allow updates to pubspec.yaml
for locally (git) hosted packages part of this melos workspace, see here
command:
version:
updateGitTagRefs: true