Skip to content

Upgrading build 2 to 3

Breaking2.5.4 → 3.1.0Breaking1Deprecated4Changed5Other2

BreakingUpgrade verdict

1 breaking change.

  • If your code generator looks up types or elements, it must be updated to the analyzer's new element model.
  • A helper for running post-process builders is being retired from this package and moved to another package.
  • A test helper for inspecting written assets is being retired.
  • A builder that combines several builders is being retired.
4 items need code or config changes

build publishes an official migration guide for version 3. It covers more than the release notes do.

Migration guide ↗
Breaking1
Requires builders that do resolution to switch to the new element2 APIs in analyzer.
element2analyzer
Deprecated3
Deprecates runPostProcessBuilder, which moves to package:build_runner_core and will be removed from package:build.
runPostProcessBuilderrunBuilder
Deprecates AssetWriterSpy, which will be removed.
AssetWriterSpy
Deprecates MultiplexingBuilder, which will be removed.
MultiplexingBuilder

Generated by DepDelta from published Dart source. Not mixed with prose notes.

  • removed: class StageTracker: abstract
  • removed: field PostProcessBuildStep.inputId: final AssetId
  • removed: method PostProcessBuildStep.Function(AssetId): void
  • removed: method StageTracker.trackStage<T>(String label, T Function() action, {bool isExternal = …}): T
  • changed: class PostProcessBuildStep → class PostProcessBuildStep: abstract
  • changed: function runBuilder( Builder builder, Iterable<AssetId> inputs, AssetReader assetReader, AssetWriter assetWriter, Resolvers? resolvers, { Logger? logger, ResourceManager? resourceManager, StageTracker stageTracker = …, void Function(AssetId input, Iterable<AssetId> assets)? reportUnusedAssetsForInput, PackageConfig? packageConfig, }): Future<void> → function runBuilder( Builder builder, Iterable<AssetId> inputs, AssetReader assetReader, AssetWriter assetWriter, Resolvers? resolvers, { Logger? logger, ResourceManager? resourceManager, build_runner_core.StageTracker? stageTracker, void Function(AssetId input, Iterable<AssetId> assets)? reportUnusedAssetsForInput, PackageConfig? packageConfig, }): Future<void>
  • changed: get BuildStep.inputLibrary: Future<LibraryElement> → get BuildStep.inputLibrary: Future<LibraryElement2>
  • changed: get Resolver.libraries: Stream<LibraryElement> → get Resolver.libraries: Stream<LibraryElement2>
  • changed: method Resolver.assetIdForElement(Element element): Future<AssetId> → method Resolver.assetIdForElement(Element2 element): Future<AssetId>
  • changed: method Resolver.astNodeFor(Element element, {bool resolve = …}): Future<AstNode?> → method Resolver.astNodeFor(Fragment fragment, {bool resolve = …}): Future<AstNode?>
  • changed: method Resolver.findLibraryByName(String libraryName): Future<LibraryElement?> → method Resolver.findLibraryByName(String libraryName): Future<LibraryElement2?>
  • changed: method Resolver.libraryFor( AssetId assetId, { bool allowSyntaxErrors = …, }): Future<LibraryElement> → method Resolver.libraryFor( AssetId assetId, { bool allowSyntaxErrors = …, }): Future<LibraryElement2>
  • added: get PostProcessBuildStep.inputId: AssetId