Repository navigation
fix(builder): report a federation output path once when it is written twice - #196
Merged
Merged
Conversation
… twice (#195) @angular/build 22.2.5 also bundles an empty external stylesheet, so a component with inline styles and an empty styleUrl emits two `<name>.css.map` outputs. writeOutputs flattens both to the same path and returned a result for each; since the adapter sets `entry`, core rejects two results for one name and the build fails whenever source maps are on (including `ng serve`).
Aukevanoost
added a commit
that referenced
this pull request
Oct 28, 2026
Backports 22.2.3..22.2.4 onto the Angular 21 layout. Incoming: - #167/#169: the dev server keeps federation externals out of the stylesheet build; Angular's ssr/prerender corrections reach serveWithVite. - #166/#168: context tsconfigs pass `types` resolved instead of widening typeRoots. - #173/#176/#186/#200: i18n translates every federation output, honours outputPath.browser, stays under the Windows command line limit, inlines the source locale only when requested and refreshes integrity hashes. - #187/#190: optional-peer entry points are skipped only when the peer is missing; @angular/localize is an optional peer. - #189/#195/#196: federation build results carry their entry; a path written twice is reported once. - #194: @softarc/native-federation ~4.9.0, orchestrator ^4.9.0. Angular 21 specific adaptations: - Checked the #167/#169 assumptions against @angular/build 21.2.24: serveWithVite reads externalDependencies and ssr back from the options it passed, and the stylesheet bundler uses externalDependencies, as on 22. - No // upstream: tags change (still angular-cli v21.2.19, 1a728258d6). - Skipped #188/#198 (remote builder): this branch has no remote builder. - Kept the internal builder without instrumentForCoverage; dropped it from the incoming spec. - Moved output-entries and the i18n integration spec into src/utils. - Skipped the `types: ["*"]` spec below TypeScript 6 (branch is on 5.9). - @angular/localize optional peer/devDependency at >=21.2.0/^21.2.0. - Kept the -v4 name, 21.2.16 version, ng21 pins and this branch's global pnpm overrides; main's vite 8 override doesn't apply to 21.2's vite 7. - pnpm-lock.yaml regenerated rather than merged.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #195.
With
@angular/build22.2.5 and source maps on, which includes the development config andng serve, building a remote failed:22.2.5 also bundles an empty external stylesheet, so a component with inline styles and an empty
styleUrlemits twoapp.component.css.mapoutputs.writeOutputsflattens both to the same path and returned a result for each. Since the adapter setsentry(#189), core rejects the duplicate.writeOutputsnow reports each written path once, keeping the result for the file the last write left on disk. No Angular internals are involved.Testing
pnpm typecheck,pnpm test(457 passing) andpnpm lintpass.angular-examples/angular/simpleon@angular/build22.2.5.ng build mfe1 -c developmentand a production build withsourceMap: truefail without the fix and pass with it.#194 touches the same file, so whichever lands second needs a small rebase.