Repository navigation
feat: adopt @softarc/native-federation 4.9.0 - #194
Merged
Merged
Conversation
translateFederationArtifacts derived its file list from FederationInfo. Without denseChunking (core's default) the chunks of mapping and exposed bundles are not in FederationInfo.chunks, so they were never copied into the other locales and 404'd there. The builder now passes core's own list of written files (collectOutputFiles), which also covers source maps and extracted css.
- Pick the bundler by the bundle `kind` core passes to setup(), and stop extending the deprecated NFBuildAdapterContext (core#218). - A second setup() under the same name disposes the old context first, as the adapter contract now states (core#203). - Drop dev, isMappingOrExposed and optimizedMappings from the normalized context options; nothing read them.
normalizeContextOptions no longer reads it.
This was referenced Oct 28, 2026
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.
Brings the adapter on par with core 4.9.0 and depends on
@softarc/native-federation~4.9.0.Changes
translateFederationArtifactsbuilt its own file list fromFederationInfo. WithoutdenseChunking(core's default), the chunks of mapping and exposed bundles are missing fromFederationInfo.chunks, so they were never copied into the other locales and 404'd there. The builder now passescollectOutputFiles(federationCache), which also covers source maps and extracted CSS.localize-translatecopies non-JS files unchanged, so a translated locale gets the source locale's.mapfiles.kind(core#218).setup()picks the bundler withkind === 'shared', anddisposeFederationContexts()disposes every bundle that isn'tshared. The context no longer extends the deprecatedNFBuildAdapterContext.setup()replaces an existing context (core#203). A secondsetup()under the same name disposes the old context first, including the compiler plugin's reset of Angular's TS state (buildForFederation corrupts globalSharedCompilationState, causing "polyfills.ts missing from TypeScript compilation" on Linux #47). Core no longer reaches this path, so this is contract conformance only.dev,isMappingOrExposedandoptimizedMappingsfrom the normalized context options, since nothing read them.No adapter change is needed for the other core PRs in next.0–next.2. The adapter already writes every file flat under absolute paths, sets
entryon mapping and exposed outputs, and declares its ownesbuild.Release notes
mappingsFromWorkspace().package(prefix, cfg)is available from@angular-architects/native-federation/config(core#214).platformorpackageInfoto a mapping no longer compiles. An untyped.mjsconfig ignores them.build: 'default'now throws.denseChunkingis off (core#178). An undeclared bare import in one of those chunks now warns, and withfeatures.strictImportson, a build that passed before can fail.chunkson a shared external withoutbuild: 'separate'orbuild: 'package'now warns and is ignored, because it only applies to an external with a bundle of its own (core#217). WithcacheExternalArtifacts, the externals cache is now keyed onchunks, so the first build after upgrading misses the cache once.integrityHashesand i18n both on, the non-source locales get the source locale'sremoteEntry.json, whose hashes don't match the translated files. feat(i18n): inline the source locale and refresh integrity hashes after translation #173 fixes this.