Skip to content

Commit 3b99980

Browse files
committed
fix(@angular-devkit/build-angular): emit root files when localize is enabled when using the esbuild based builders
This commit adds back the root files to the `outputFiles` when localize is enabled. Closes angular#26386 (cherry picked from commit aa13140)
1 parent 0027e4d commit 3b99980

File tree

2 files changed

+24
-6
lines changed

2 files changed

+24
-6
lines changed

packages/angular_devkit/build_angular/src/builders/application/i18n.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import { BuilderContext } from '@angular-devkit/architect';
1010
import { join, posix } from 'node:path';
11-
import { InitialFileRecord } from '../../tools/esbuild/bundler-context';
11+
import { BuildOutputFileType, InitialFileRecord } from '../../tools/esbuild/bundler-context';
1212
import { ExecutionResult } from '../../tools/esbuild/bundler-execution-result';
1313
import { I18nInliner } from '../../tools/esbuild/i18n-inliner';
1414
import { maxWorkers } from '../../utils/environment-options';
@@ -108,8 +108,13 @@ export async function inlineI18n(
108108
await inliner.close();
109109
}
110110

111-
// Update the result with all localized files
112-
executionResult.outputFiles = updatedOutputFiles;
111+
// Update the result with all localized files.
112+
executionResult.outputFiles = [
113+
// Root files are not modified.
114+
...executionResult.outputFiles.filter(({ type }) => type === BuildOutputFileType.Root),
115+
// Updated files for each locale.
116+
...updatedOutputFiles,
117+
];
113118

114119
// Assets are only changed if not using the flat output option
115120
if (options.i18nOptions.flatOutput !== true) {

packages/angular_devkit/build_angular/src/builders/application/tests/options/extract-licenses_spec.ts

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => {
1818
});
1919

2020
const { result } = await harness.executeOnce();
21-
expect(result?.success).toBe(true);
21+
expect(result?.success).toBeTrue();
2222
harness.expectFile('dist/3rdpartylicenses.txt').content.toContain('MIT');
2323
});
2424

@@ -29,7 +29,7 @@ describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => {
2929
});
3030

3131
const { result } = await harness.executeOnce();
32-
expect(result?.success).toBe(true);
32+
expect(result?.success).toBeTrue();
3333
harness.expectFile('dist/3rdpartylicenses.txt').toNotExist();
3434
});
3535

@@ -39,8 +39,21 @@ describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => {
3939
});
4040

4141
const { result } = await harness.executeOnce();
42-
expect(result?.success).toBe(true);
42+
expect(result?.success).toBeTrue();
4343
harness.expectFile('dist/3rdpartylicenses.txt').content.toContain('MIT');
4444
});
45+
46+
it(`should generate '3rdpartylicenses.txt' when 'extractLicenses' and 'localize' are true`, async () => {
47+
harness.useTarget('build', {
48+
...BASE_OPTIONS,
49+
localize: true,
50+
extractLicenses: true,
51+
});
52+
53+
const { result } = await harness.executeOnce();
54+
expect(result?.success).toBeTrue();
55+
harness.expectFile('dist/3rdpartylicenses.txt').content.toContain('MIT');
56+
harness.expectFile('dist/browser/en-US/main.js').toExist();
57+
});
4558
});
4659
});

0 commit comments

Comments
 (0)