Flutter Monorepo Build Tools
flutter pub get flutter_monorepo_build_tools
nano monorepo.yaml
- see
monorepo.sample.yaml
for an example of how to configure
- see
Monorepo Build Tool
Usage
dart run flutter_monorepo_build_tools:monorepo_build_tool
Re-run the tool whenever you add, rename, or remove a local package or if local package dependencies change.
Arguments
You can provide the following flags/options to modify the behavior of the monorepo build tool:
Flag | Effect | Default Value |
---|---|---|
verbose | Enables printing logs. | false |
OOTB CI Support
At release, FMBT only contains out-of-the-box support for CircleCI using the path-filtering
approach.
To configure your monorepo:
- Create a source folder to contain your raw CircleCI config. This should include one
config.yml
file and as manycontinue-config.yml
type files as you wish. config.yml
should look something like this:
version: 2.1
# this allows you to use CircleCI's dynamic configuration feature
setup: true
# the path-filtering orb is required to continue a pipeline based on
# the path of an updated fileset
orbs:
path-filtering: circleci/path-filtering@0.1.1
workflows:
# the always-run workflow is always triggered, regardless of the pipeline parameters.
always-run:
jobs:
# the path-filtering/filter job determines which pipeline
# parameters to update.
- path-filtering/filter:
name: check-updated-files
# the mapping key will be automatically generated by flutter_monorepo_build_tools
base-revision: master
# this is the path of the configuration we should trigger once
# path filtering and pipeline parameter value updates are
# complete.
config-path: .circleci/continue-config.yml
- Create however many
continue-config.yml
type files you need for your use case. It is important when naming workflows that they contain the name of your entrypoint directory. For example, if your workflow is related to an appapp
, it should be named something likeapp_deploy
. For a full list of matching globs, seeentrypointPermutations
incircle_ci_update_manager.dart
.
Known Limitations
Single quotation marks in values must be escaped
Some string values are wrapped with single quotation marks in the output even when they are not
in the source. We believe this is due to json2yaml
, which this package uses. It is unclear
at this point whether it is possible to overcome this. We recommend that you run this tool on
your existing configuration and validate the output before committing to this tool.
If you have a line like this:
- run: echo 'export PATH="$PATH:`pwd`/flutter/bin"' \>> $BASH_ENV
then you will need to escape the single quotes by prepending them with an additional single quote, like so:
- run: echo ''export PATH="$PATH:`pwd`/flutter/bin"'' \>> $BASH_ENV
It is important that you do not wrap such a value in single quotes, e.g.
# DO NOT DO THIS
- run: 'echo: ''something'''
# DO THIS INSTEAD
- run: echo ''something''
This will result in your output having unescaped single quotation marks, causing the overall config to be become impossible to parse.