Package selection guidance compiled from public package information, community data, and project usage.
Peanut is a Dart package that automates the deployment of compiled web app output to a GitHub gh-pages branch. It supports both legacy 'pub build' and modern 'pub run build_runner' workflows, streamlining the publishing process for Flutter web applications. Designed for developers who want to host their web apps on GitHub Pages, Peanut handles the build and push steps with minimal configuration. It integrates seamlessly into CI/CD pipelines or local development environments across macOS, Windows, and Linux.
Use cases
Deploying Flutter web apps to GitHub Pages
Automating builds and deployments
Integrating with CI/CD workflows
Publishing static web content from Dart projects
Simplifying gh-pages updates after builds
Key features
Supports pub build and build_runner
Automates git push to gh-pages
Cross-platform compatibility
Minimal setup required
Works with Flutter web apps
Suitable for
Flutter web developers
GitHub Pages users
CI/CD automation
Dart project maintainers
Developers seeking simple deployment
Considerations
Requires GitHub repository access
Needs proper git credentials configured
Not suitable for non-GitHub hosting
Depends on build_runner for modern workflows
May require environment-specific setup
Original README
Original README snapshot from the linked source repository. Visit the repository for the latest content.
Run flutter build web or dart pub run build_runner build and put the output
in another branch. An easy way to update gh-pages.
Install
dart pub global activate peanut
or
flutter pub global activate peanut
Run
peanut
or
flutter pub global run peanut
This will build your project into a temporary directory, and then it will update
the local gh-pages branch with the build output.
$ peanut --help
Usage: peanut [<args>]
Arguments:
-d, --directories The directories that should be built.
(defaults to "web")
-b, --branch The git branch where the built content should
be committed.
(defaults to "gh-pages")
-c, --build-config The configuration to use when running
`build_runner`.
--[no-]release Flutter: enabled passes `--release`, otherwise
passes `--profile`.
Other: enabled passes `--release`, otherwise
passes `--no-release`.
(defaults to on)
-m, --message (defaults to "Built <directories>")
--[no-]source-branch-info Includes the name of the source branch and SHA
in the commit message
(defaults to on)
--[no-]version-info Includes the pubspec version of the package in
the commit message
--post-build-dart-script Optional Dart script to run after all builds
have completed, but before files are committed
to the repository.
--builder-options Builder options YAML or a path to a file
containing builder options YAML.
See the README for details.
--[no-]verbose Print more details when running.
--dry-run Verifies configuration and prints commands that
would be executed, but does not do any work.
--[no-]wasm Whether to build for WebAssembly (WASM).
--extra-args Extra arguments to provide to the target CLI
within a single string.
Examples:
--extra-args "--dart-define TEST_VAR=123"
--extra-args "--dart-define --base-href=/base/"
-h, --help Prints usage information.
--version Print the current version.
Configuration file
peanut also supports a configuration file. Convenient if you have one-off
settings you'd rather not type every time you deploy.
The peanut.yaml from this repository:
# Configuration for https://pub.dev/packages/peanutdirectories:-example# The Dart script to run after the build is complete, but before the changes are committed.# This script is run in the root of the package.# The script has access to the root of the build output directory as the first argument.post-build-dart-script:tool/post_build.dart# Build options to pass to `build_runner`.# These are merged with any existing `build.yaml` file.builder-options:build_web_compilers|entrypoint:compilers:dart2wasm:args:--O4---no-strip-wasmdart2js:args:---stage=dump-info-all---no-frequency-based-minification---no-source-maps--O4build_web_compilers|dart2js_archive_extractor:filter_outputs:false
Post-build Dart script
You can optionally specify a Dart script to run after the build is complete, but
before the changes are committed.
post-build-dart-script:tool/post_build.dart
This script is run from the root of the package.
It receives two arguments:
The path to a temporary directory which contains the build output. For
example, if you are building a single directory web, the output will be in
a web subdirectory of this temporary directory.
A JSON-encoded map where keys are the source directories that were built,
and values are the corresponding output sub-directories within the temporary
directory from the first argument.
For example, if you run peanut -d web, the script will be called with:
args[0]: /tmp/peanut.xyz (a temporary path)
args[1]: {"web":"."}
The index.html for the web build would be at /tmp/peanut.xyz/index.html.