Upgrading build 2 to 3
Breaking2.5.4 → 3.1.0Breaking1Deprecated4Changed5Other2
BreakingUpgrade verdict
1 breaking change.
In plain terms
- 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.
Must act 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 ↗What you must change
Breaking1
Requires builders that do resolution to switch to the new element2 APIs in analyzer.
element2analyzerDeprecations to plan for
Deprecated3
Deprecates
runPostProcessBuilder, which moves to package:build_runner_core and will be removed from package:build.runPostProcessBuilderrunBuilderDeprecates
AssetWriterSpy, which will be removed.AssetWriterSpyDeprecates
MultiplexingBuilder, which will be removed.MultiplexingBuilderAPI changes
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