Manage multiple Dart packages within a single repository.
> pub global activate mono_repo
> pub global run mono_repo
Or, once you've setup your PATH:
> mono_repo
Prints the following help message:
Manage multiple packages in one source repository.
Usage: mono_repo <command> [arguments]
Global options:
-h, --help Print this usage information.
--version Prints the version of mono_repo.
--[no-]recursive Whether to recursively walk sub-directorys looking for packages.
Available commands:
check Check the state of the repository.
help Display help information for mono_repo.
presubmit Run the travis presubmits locally.
pub Run `pub get` or `pub upgrade` against all packages.
travis Configure Travis-CI for child packages.
Run "mono_repo help <command>" for more information about a command.
To configure a package directory to be included it must contain a
mono_pkg.yaml
file (along with the normal pubspec.yaml
file).
You can use an empty mono_pkg.yaml
file to enable the check
and pub
commands.
To enable travis
and presubmit
, you must populate mono_pkg.yaml
with
details on how you'd like tests to be run.
mono_pkg.yaml
example# This key is required. It specifies the Dart SDKs your tests will run under
# You can provide one or more value.
# See https://docs.travis-ci.com/user/languages/dart#choosing-dart-versions-to-test-against
# for valid values
dart:
- dev
stages:
# Register two jobs to run under the `analyze` stage.
- analyze:
- dartanalyzer
- dartfmt
- unit_test:
- test
Running mono_repo travis
in the root directory generates two files:
.travis.yml
and tool/travis.sh
.
Look at these repositories for examples of mono_repo
usage:
--version
to executable.branches
in mono_repo.yaml
.mono_repo.yaml
.BREAKING CHANGES
The root mono_config.yaml
file is no longer used to configure which packages
are configured. Instead, mono_pkg.yaml
is required to be in each target
package directory. A package is considered published if it has a value for
version
in pubspec.yaml
.
The package configuration file is now mono_pkg.yaml
. If a legacy config file
– .mono_repo.yml
– is found, the command is canceled and a warning is
printed telling the user to rename the file.
Removed the init
command.
description
key for jobs within a stage, for example:stages:
- unit_test:
- description: "chrome"
test: -p chrome
pub
command now runs with inherited standard IO. You now see colors!Added support for the group
task, which accepts a list of tasks using the
normal format. This can be used to group multiple tasks in a single travis
job. All tasks will be ran, but if any of them fail then the whole job will
fail.
Example usage combining the analyzer/dartfmt tasks:
stages:
- analyze_and_format:
- group:
- dartanalyzer
- dartfmt
.travis.yml
files should be replaced with .mono_repo.yml
files, which are a simplified format that supports travis build stages. A
basic example file might look like this:# List of the sdk versions you support
dart:
- dev
- stable
# Ordered list of all stages you want to run.
stages:
# A single stage, called `analyze_and_format` which runs the analyzer and
# the formatter only.
- analyze_and_format:
- dartanalyzer: --hints-as-warnings .
- dartfmt: sdk
dart:
- dev # Overrides the top level sdk default
# Assuming everything analyzed correctly, runs a build.
- build:
- command: "pub run build_runner build"
# And finally run tests, these are custom build_runner tests but the regular
# `test` task is also supported.
- unit_test:
- command: "pub run build_runner test"
- command: "pub run build_runner test -- -p chrome"
travis
command
Make numbering more consistent and clean when there is more than one task with a given name.
Print out the full command that executed as part of a task.
Support a List
value for before_script
.
travis
command
Write ANSI escape sequences in ./tool/travis.sh
as pre-escaped ASCII
literals.
Added --[no-]pretty-ansi
flag to allow ANSI sequences to be optionally
omitted.
Add before_script
support to the travis
command. When that value is set in
a travis.yml
file, we will call the script before running any of the tasks
for that package.
Add recursive
global flag. When set, we will walk all sub-directories
looking for pubspec.yaml
files.
Support git dependencies in packages.
Use mono_repo.yaml
as the configuration file name, instead of
packages.yaml
.
You can install the package from the command line:
$ pub global activate mono_repo
The package has the following executables:
$ mono_repo
Add this to your package's pubspec.yaml file:
dependencies:
mono_repo: ^1.2.1
You can install packages from the command line:
with pub:
$ pub get
with Flutter:
$ flutter packages get
Alternatively, your editor might support pub get
or flutter packages get
.
Check the docs for your editor to learn more.
Now in your Dart code, you can use:
import 'package:mono_repo/mono_repo.dart';
Version | Uploaded | Documentation | Archive |
---|---|---|---|
1.2.1 | Oct 8, 2018 |
|
|
1.2.0 | Sep 24, 2018 |
|
|
1.1.0 | Aug 30, 2018 |
|
|
1.0.0 | Aug 28, 2018 |
|
|
0.3.3 | Jul 27, 2018 |
|
|
0.3.2+1 | Jul 23, 2018 |
|
|
0.3.2 | May 31, 2018 |
|
|
0.3.1 | Feb 15, 2018 |
|
|
0.3.0 | Feb 7, 2018 |
|
|
0.2.2 | Jan 31, 2018 |
|
|
Popularity:
Describes how popular the package is relative to other packages.
[more]
|
3
|
Health:
Code health derived from static analysis.
[more]
|
100
|
Maintenance:
Reflects how tidy and up-to-date the package is.
[more]
|
77
|
Overall:
Weighted score of the above.
[more]
|
47
|
We analyzed this package on Feb 20, 2019, and provided a score, details, and suggestions below. Analysis was completed with status completed using:
Detected platforms: Flutter, other
Primary library:
package:mono_repo/mono_repo.dart
with components:io
.
The package description is too short. (-13 points)
Add more detail to the description
field of pubspec.yaml
. Use 60 to 180 characters to describe the package, what it does, and its target use case.
Maintain an example. (-10 points)
Create a short demo in the example/
directory to show how to use this package.
Common filename patterns include main.dart
, example.dart
, and mono_repo.dart
. Packages with multiple examples should provide example/README.md
.
For more information see the pub package layout conventions.
Package | Constraint | Resolved | Available |
---|---|---|---|
Direct dependencies | |||
Dart SDK | >=2.0.0-dev.54 <3.0.0 | ||
args | ^1.4.0 | 1.5.1 | |
collection | ^1.14.3 | 1.14.11 | |
graphs | ^0.1.0 | 0.1.3+1 | 0.2.0 |
io | ^0.3.2+1 | 0.3.3 | |
json_annotation | ^1.1.0 | 1.2.0 | 2.0.0 |
path | ^1.4.1 | 1.6.2 | |
pub_semver | ^1.3.2 | 1.4.2 | |
pubspec_parse | ^0.1.0 | 0.1.4 | |
yaml | ^2.1.12 | 2.1.15 | |
Transitive dependencies | |||
charcode | 1.1.2 | ||
meta | 1.1.7 | ||
source_span | 1.5.4 | ||
string_scanner | 1.0.4 | ||
term_glyph | 1.1.0 | ||
Dev dependencies | |||
build_runner | ^1.0.0 | ||
build_test | ^0.10.0 | ||
build_verify | ^1.0.0 | ||
build_version | ^2.0.0 | ||
build_vm_compilers | ^0.1.0 | ||
json_serializable | ^1.1.0 | ||
test | ^1.3.0 | ||
test_descriptor | ^1.0.0 | ||
test_process | ^1.0.1 |