NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #126 most downloaded on pub.dev
A package for authoring build_runner compatible code generators.
Last release 1 months ago
02 Sep 2026
Ships fairly regularly
a new release about every 5 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
111 releases · first in 2016
Clarify terminology: refer to .dart_tool/build/generated as the "artifact tree", and the normal output location as the "package path".
.dart_tool/build/generated as the "artifactAllow package_config 3.0.0.
package_config 3.0.0.One column per quarter.
AssetId now validates package names in addition to paths.
AssetId now validates package names in addition to paths.AssetId path validation.Allow analyzer 14.0.0, require 13.3.0.
analyzer 14.0.0, require 13.3.0.Replace Builder extension method hasOutputFor with matchesInput. Deprecate hasOutputFor. The new matchesInput is identical, but now that zero-output b…
Builder extension method hasOutputFor with matchesInput.
Deprecate hasOutputFor. The new matchesInput is identical, but now that
zero-output builders are supported the old name is misleading.- Allow analyzer 13.0.0.
analyzer 13.0.0.Allow analyzer 11.0.0 and 12.0.0.
analyzer 11.0.0 and 12.0.0.- Allow analyzer 10.0.0.
analyzer 10.0.0.- Allow analyzer 9.0.0.
analyzer 9.0.0.Require analyzer 8.0.0. Remove use of deprecated analyzer members, use their recommended and compatible replacements.
analyzer 8.0.0. Remove use of deprecated analyzer members, use
their recommended and compatible replacements.- Improvements to dartdoc.
Remove methods and classes deprecated in 4.0.0.
4.0.0.AssetReader.digest abstract.async, build_runner_core, convert.Deprecate runBuilder. It has been moved to package:build_runner_core and will be removed from package:build. Please note: the currently supported ways…
runBuilder. It has been moved to package:build_runner_core and
will be removed from package:build. Please note: the currently supported
ways to run builders are using build_runner on the command line or
build_test in tests. If you need ongoing support for a different way to run
builders please get in touch at
https://github.com/dart-lang/build/discussions.runPostProcessBuilder. Like runBuilder, it has been moved to
package:build_runner_core and will be removed from package:build.AssetWriterSpy. It will be removed.MultiplexingBuilder. It will be removed.build_runner_core 9.3.1.- Use build_runner_core 9.3.0. - Documentation revamp. - Allow meta 1.16.0.
build_runner_core 9.3.0.meta 1.16.0.Small improvements to RAM usage.
analyzer 8.0.0.Removed unused deps: meta, pool.
meta, pool.element2 APIs in analyzer. Builders that do
resolution need to switch to the new API, see
https://github.com/dart-lang/sdk/blob/main/pkg/analyzer/doc/element_model_migration_guide.md.
For questions please use https://github.com/dart-lang/build/discussions.Removed unused deps: meta, pool.
meta, pool.Breaking: use the new element2 APIs in analyzer. Builders that do resolution need to switch to the new API, see https://github.com/dart-lang/sdk/blob/
element2 APIs in analyzer. Builders that do
resolution need to switch to the new API, see
https://github.com/dart-lang/sdk/blob/main/pkg/analyzer/doc/element_model_migration_guide.md.
For questions please use https://github.com/dart-lang/build/discussions.- Use build_runner_core 9.1.2.
build_runner_core 9.1.2.- Use build_runner_core 9.1.1.
build_runner_core 9.1.1.- Use build_runner_core 9.1.0.
build_runner_core 9.1.0.- Use build_runner_core 9.0.1.
build_runner_core 9.0.1.Ignore deprecated analyzer API usages.
User-visible changes:
build_runner performance
then please consider sharing details at
https://github.com/dart-lang/build/discussions.AssetNotFoundException now also reports the missing path.Versions:
build_test 3.0.0.build_runner_core 9.0.0.Internal changes:
package:build/src/internal.dart for use by build_resolvers,
build_runner_core and build_test.PathProvidingAssetReader to AssetPathProvider.MultiPackageAssetReader to internal AssetFinder.Filesystem that backs AssetReader and AssetWriter
implementations.CachingAssetReader to FilesystemCache.BuildCacheReader to BuildCacheAssetPathProvider.FileBasedAssetReader and FileBasedAssetWriter to ReaderWriter.BuildStepImpl to build_runner_core, use SingleStepReader directly.LibraryCycleGraphLoader for loading transitive deps for analysis.Remove some unnecessary casts and non-null assertions now that we have private field promotion.
Allow the latest analyzer (6.x.x).
Add BuildStep.packageConfig getter to resolve a package config of all packages involved in the current build.
BuildStep.packageConfig getter to resolve a package config of all
packages involved in the current build.Allow the latest package:analyzer.
package:analyzer.Support ^ in build extensions that don't use capture groups, which results in full path matching instead of suffix matching.
- Allow analyzer version 4.x.
Fix a bug where builders were allowed to write to the same asset multiple times.
Allow reusing the values held by Resources when the resource has a dispose method. Previously the instances were discarded and recreated for every bui
Resources when the resource has a dispose
method. Previously the instances were discarded and recreated for every build
even if they had tried to clean up their own state.Throw an ArgumentError if an expected output matches the input.
ArgumentError if an expected output matches the input.Expand the expressiveness of buildExtensions include capture groups, enabling directory moves.
buildExtensions include capture groups,
enabling directory moves.allowedOutputs getter to BuildStep. It returns assets that may be
written in that step.- Allow analyzer version 2.x.x.
Handle failed resolvers in buildStep.complete.
buildStep.complete.Require package:async version 2.5.0 and package:collection version 1.15.0.
__Breaking__: Remove the deprecated rootPackage argument to runBuilder
rootPackage argument to runBuilderAssetId.resolve from a String
(which previously was required to be a valid URI) to a Uri instance. Call
sites which have static errors can wrap the argument with Uri.parse().Use latest analyzer version 1.x.
1.x.2.x.Fix AssetId.resolve for empty uris
AssetId.resolve for empty urisAllow the null safe pre-releases of all migrated deps.
Adds the Future astNodeFor(Element, {bool resolve}) api to Resolver which provides a safe way of getting ast nodes (avoiding InconsistentAnalysisExcep
Future<AstNode> astNodeFor(Element, {bool resolve}) api to
Resolver which provides a safe way of getting ast nodes (avoiding
InconsistentAnalysisExceptions).Allow the latest analyzer verion 0.41.x.
0.41.x.Expose a set of valid inputs in InvalidInputException.
InvalidInputException.AssetReader implementations are now expected to throw
InvalidInputExceptions when reading invalid inputs.
The check has been removed from the build step implementation.Allow the latest analyzer version 0.40.x.
0.40.x.Future<CompilationUnit> compilationUnitFor(AssetId id) api to the
Resolver class, which returns only the parsed AST for the given asset.
libraryFor, because it only reads the given asset instead
of touching all transitive deps.Element model.The resolver will now throw an SyntaxErrorInAssetException when attempting to resolve an asset with syntax errors. You can opt-out of this new behavio
The resolver will now throw an SyntaxErrorInAssetException when attempting to
resolve an asset with syntax errors. You can opt-out of this new behavior by
passing allowSyntaxErrors: true to libraryFor.
Added a new experiments library which exposes a list of language experiments through a Zone variable. This should only be used by builders which are i
Added a new experiments library which exposes a list of language experiments through a Zone variable. This should only be used by builders which are invoking compilers or some other tool and need to pass on the language experiments.
Resolver.libraries will now return any library that has been resolved with this resolver. This means calls to libraryFor or isLibrary on files not alr
Resolver.libraries will now return any library that has been resolved with
this resolver. This means calls to libraryFor or isLibrary on files not
already resolved will make subsequent libraries streams return more
libraries than previous calls did.findLibraryByName since it searches through the
libraries stream. You may get a different result at different points in
your build method if you resolve additional libraries.- Allow analyzer 0.39.x.
0.39.x.Add the void reportUnusedAssets(Iterable ids) method to the BuildStep class.
void reportUnusedAssets(Iterable<AssetId> ids) method to the
BuildStep class.
ids were read but their content has
no impact on the outputs of the build.- Allow analyzer version 0.38.0.
- Allow analyzer version 0.37.0.
Internal cleanup: use "strict raw types".
Future<dynamic>
to Future<void>.Update the minimum sdk constraint to 2.1.0.
package:analyzer to <0.37.0.Internal fixes: Remove default value for optional argument.
Requires analyzer version 0.35.0
0.35.0
Resolver implementations in other packages are now backed by an
AnalysisDriver. There are behavior changes which may be breaking. The
LibraryElement instances returned by the resolver will now:
context fields.session fields.Source instances with different URIs than before.Add Resolver.assetIdForElement API. This allows finding the Dart source asset which contains the definition of an element found through the analyzer.
Resolver.assetIdForElement API. This allows finding the Dart source
asset which contains the definition of an element found through the analyzer.AssetReader.digest method should do the
same, and a comment has been added to that effect.Increased the upper bound for package:analyzer to <0.35.0.
package:analyzer to <0.35.0.Increased the upper bound for package:analyzer to <0.34.0.
package:analyzer to <0.34.0.Changed the return type of Builder.build from Future to FutureOr . This should not be breaking for most Builder authors, it is only breaking for build
Builder.build from Future<dynamic> to
FutureOr<void>. This should not be breaking for most Builder authors, it
is only breaking for build system implementations that run Builders.Added the T trackStage (String label, T Function() action); method to BuildStep. Actions that are tracked in this way will show up in the performance
T trackStage<T>(String label, T Function() action); method to
BuildStep. Actions that are tracked in this way will show up in the
performance timeline at /$perf.Your coding agent can read these notes before it upgrades. Set up the MCP server →