Search packages, repositories and app categories

Package detailsv11.11.1

pub_release

Automates the release of a dart package to pub.dev including running dartfmt, creating a git tag, incrementing the packages version no. and pushing the package to pub.dev.

macOSWindowsLinux
30-day downloads
970
Likes
22
Pub points
150

Install package

flutter pub add pub_release

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

pub_release is a Flutter/Dart package that automates the process of releasing a Dart package to pub.dev. It streamlines publishing by running dartfmt for code formatting, incrementing the version number, creating a git tag, and pushing the updated package to pub.dev. Designed for developers who frequently publish packages, it reduces manual steps and minimizes errors during release workflows. The tool supports macOS, Windows, and Linux, making it accessible across major development environments.

Use cases

  • Automating package releases
  • Streamlining pub.dev publishing
  • Ensuring consistent code formatting
  • Managing version increments
  • Reducing manual release errors

Key features

  • Automated dartfmt execution
  • Version bumping
  • Git tagging
  • Push to pub.dev
  • Cross-platform support

Suitable for

  • Dart package maintainers
  • CI/CD pipeline integrations
  • Frequent publishers
  • Open-source contributors

Considerations

  • Requires git setup
  • Needs pub.dev credentials
  • Depends on correct versioning strategy
  • May need custom configuration for complex workflows

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

README

Pub Release is a package that automates publishing dart/flutter packages to pub.dev.

Pub Release also supports the simultaneous release of multiple related packages.

Pub Release performs the following operations:

  • Run pre/post release 'hook' scripts.
  • Formats all code using dartfmt
  • Increments the version no. using semantic versioning after asking what sort of changes have been made.
  • Creates a dart file containing the version no. in src/version/version.g.dart
  • Updates the pubspec.yaml with the new version no.
  • If you are using Git:
    • Generates a Git Tag using the new version no.
    • Generates release notes from commit messages since the last tag.
    • Publish any executables list in pubspec.yaml as assets on github
  • Allows you to edit the release notes.
  • Adds the release notes to CHANGELOG.MD along with the new version no.
  • Publishes the package to pub.dev.

Getting Started

Install Pub Release globally:

dart pub global activate pub_release

Run it from your package root:

pub_release

Read the full documentation to learn how to use it.

Common Workflows

Dry-run a release (no publish):

pub_release --dry-run

Set a specific version and skip prompts:

pub_release --setVersion=1.2.3 --autoAnswer

Run multi-package release in a mono-repo:

pub_release multi

Dry Run

Use --dry-run to validate a release without publishing. During a dry run, pub_release performs the publish step inside a temporary copy of your package to avoid git working tree warnings while still validating the generated version and changelog.

If you need to allow warnings from dart pub publish, pass --ignore-warnings.

Commands

  • pub_release - release a single package (default).
  • pub_release multi - release related packages using tool/pubrelease.multi.yaml.
  • pub_release help - show usage.

Flags

  • --dry-run - validate but do not publish.
  • --ignore-warnings - pass --ignore-warnings to dart pub publish.
  • --[no]-test - enable/disable unit tests (default: on).
  • --test-concurrency=<n> - maximum concurrent test suites (positive integer); overrides the project setting.
  • --line=<n> - formatter line length (default: 80).
  • --[no]-format - enable/disable formatting (default: on).
  • --verbose - enable verbose logging.
  • --git - enable git operations (default: on).
  • --no-multi - disable multi-release even if a multi config exists.
  • --askVersion - prompt for version (default).
  • --setVersion=<x.y.z> - set version directly.
  • --autoAnswer - suppress prompts (requires --setVersion).
  • --tags=<tag,...> - only run tests matching tags.
  • --exclude-tags=<tag,...> - exclude tests by tag.
  • --skip-packages=<name,...> - skip named packages when running the multi command.

Test Concurrency

For projects whose tests share external state, run test suites serially by adding the following to tool/.pubrelease.yaml:

test-concurrency: 1

Override the project setting for a release with:

pub_release --test-concurrency=4

Pub Release passes the selected value to critical_test as --concurrency=<n>. The value must be a positive integer. If neither setting is provided, critical_test's default concurrency is unchanged. For multi-package releases, the selected value applies to every released package. --no-test still skips tests regardless of the concurrency setting.

Multi Release Notes

When using pub_release multi, the first package that generates a changelog entry will have its release notes propagated to the other packages unless they already contain notes for that version.

Categories

Dependencies

Dependency list 10 items

Source repository

Projects using this package

No data available yet.