Last updated:
0 purchases
puby
Run commands in all projects in the current directory. Handle monorepos with ease.
Features #
No configuration necessary. Run puby anywhere. It won't complain.
Execute pub get in seconds rather than minutes with puby link
Reclaim disk space with puby clean
Supports all project-level pub commands
Execute any command in all projects with puby exec
Determines the project engine (dart, flutter, fvm) automatically
Convenience shortcuts for common dart/flutter commands
Combined exit code for use in CI
Per-project command exclusions
Command
Equivalent
puby [args]
[engine] pub [args]
puby link
Warm the pub cache and run [engine] pub get --offline (see below)
puby gen
[engine] pub run build_runner build --delete-conflicting-outputs
puby test
[engine] test
puby clean
flutter clean
puby mup
[engine] pub upgrade --major-versions
puby reset
puby clean && puby get
puby relink
puby clean && puby link
puby exec [command]
command
For projects configured with FVM, fvm flutter is used. FVM support can be disabled with the --no-fvm option.
Use as an executable #
Installation #
$ dart pub global activate puby
copied to clipboard
Usage #
$ puby get
$ puby upgrade --major-versions
...
copied to clipboard
Notes on puby link #
This command is based on flutter update-packages. All of the dependencies required by all of the projects in the current directory are cataloged and cached if necessary, then pub get --offline can safely run in all the projects in parallel.
This command no longer requires existing pubspec.lock files to function and instead uses the same version resolution strategy from the pub command to catalog dependencies.
The puby link command can run many times faster than puby get, so it is very useful for large mono-repos.
Benchmarks in the flutter/packages repo:
Command
Duration
puby get
9:01.97
melos bootstrap
47.810
puby link
25.881
Benchmark setup:
M3 MacBook Pro
Gigabit internet connection
Run puby clean && dart pub cache clean before each run
melos bootstrap is run with a custom branch of flutter/packages with the required setup
Notes on puby exec #
Paths relative to the directory you are running puby in will not work. For example:
puby exec ./foo.sh will not work
puby exec $PWD/foo.sh will work
Configuration #
Create a puby.yaml file in the root of the project you want to configure
Exclusions #
Add command exclusions to prevent them from running in a project
exclude:
- test
- pub run build_runner
copied to clipboard
Exclusions match from the start of a command, and the entire exclusion string must be present. Here are some examples:
Exclusion
Example command excluded
test
[engine] test --coverage
pub run build_runner
[engine] pub run build_runner build
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.