Skip to content

Commit 37d8e25

Browse files
committed
fix(@angular-devkit/build-angular): generate consistent filenames
With this change we generate consistent file names when using the browser builder in watch mode with differential loading. Closes #15157
1 parent 7f2ae4b commit 37d8e25

File tree

8 files changed

+40
-27
lines changed

8 files changed

+40
-27
lines changed

packages/angular_devkit/build_angular/src/browser/index.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ async function initialize(
128128
options: BrowserBuilderSchema,
129129
context: BuilderContext,
130130
host: virtualFs.Host<fs.Stats>,
131-
differentialLoadingMode: boolean,
131+
differentialLoadingNeeded: boolean,
132132
webpackConfigurationTransform?: ExecutionTransformer<webpack.Configuration>,
133133
): Promise<{
134134
config: webpack.Configuration;
@@ -159,7 +159,7 @@ async function initialize(
159159
wco.buildOptions.webWorkerTsConfig ? getWorkerConfig(wco) : {},
160160
],
161161
host,
162-
{ differentialLoadingMode },
162+
{ differentialLoadingNeeded },
163163
);
164164

165165
// Validate asset option values if processed directly
@@ -225,7 +225,6 @@ export function buildWebpackBrowser(
225225
const target = compilerOptions.target || ScriptTarget.ES5;
226226
const buildBrowserFeatures = new BuildBrowserFeatures(sysProjectRoot);
227227
const isDifferentialLoadingNeeded = buildBrowserFeatures.isDifferentialLoadingNeeded(target);
228-
const differentialLoadingMode = !options.watch && isDifferentialLoadingNeeded;
229228

230229
if (target > ScriptTarget.ES2015 && isDifferentialLoadingNeeded) {
231230
context.logger.warn(tags.stripIndent`
@@ -249,7 +248,7 @@ export function buildWebpackBrowser(
249248
}
250249

251250
return {
252-
...(await initialize(options, context, host, differentialLoadingMode, transforms.webpackConfiguration)),
251+
...(await initialize(options, context, host, isDifferentialLoadingNeeded, transforms.webpackConfiguration)),
253252
buildBrowserFeatures,
254253
isDifferentialLoadingNeeded,
255254
target,

packages/angular_devkit/build_angular/src/browser/specs/differential_loading_spec.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -148,17 +148,17 @@ describe('Browser Builder with differential loading', () => {
148148
'favicon.ico',
149149
'index.html',
150150

151-
'main.js',
152-
'main.js.map',
151+
'main-es2015.js',
152+
'main-es2015.js.map',
153153

154-
'polyfills.js',
155-
'polyfills.js.map',
154+
'polyfills-es2015.js',
155+
'polyfills-es2015.js.map',
156156

157-
'runtime.js',
158-
'runtime.js.map',
157+
'runtime-es2015.js',
158+
'runtime-es2015.js.map',
159159

160-
'vendor.js',
161-
'vendor.js.map',
160+
'vendor-es2015.js',
161+
'vendor-es2015.js.map',
162162

163163
'styles.css',
164164
'styles.css.map',
@@ -202,10 +202,10 @@ describe('Browser Builder with differential loading', () => {
202202

203203
const { files } = await browserBuild(architect, host, target, { watch: true });
204204
expect(await files['index.html']).toContain(
205-
'<script src="runtime.js" type="module"></script>' +
206-
'<script src="polyfills.js" type="module"></script>' +
207-
'<script src="vendor.js" type="module"></script>' +
208-
'<script src="main.js" type="module"></script>',
205+
'<script src="runtime-es2015.js" type="module"></script>' +
206+
'<script src="polyfills-es2015.js" type="module"></script>' +
207+
'<script src="vendor-es2015.js" type="module"></script>' +
208+
'<script src="main-es2015.js" type="module"></script>',
209209
);
210210
});
211211
});

packages/angular_devkit/build_angular/src/browser/specs/scripts-array_spec.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,20 +81,20 @@ describe('Browser Builder scripts array', () => {
8181
'lazy-script.js': 'lazy-script',
8282
'renamed-script.js': 'pre-rename-script',
8383
'renamed-lazy-script.js': 'pre-rename-lazy-script',
84-
'main.js': 'input-script',
85-
'index.html': '<script src="runtime.js" type="module"></script>'
86-
+ '<script src="polyfills.js" type="module"></script>'
84+
'main-es2015.js': 'input-script',
85+
'index.html': '<script src="runtime-es2015.js" type="module"></script>'
86+
+ '<script src="polyfills-es2015.js" type="module"></script>'
8787
+ '<script src="scripts.js" defer></script>'
8888
+ '<script src="renamed-script.js" defer></script>'
89-
+ '<script src="vendor.js" type="module"></script>'
90-
+ '<script src="main.js" type="module"></script>',
89+
+ '<script src="vendor-es2015.js" type="module"></script>'
90+
+ '<script src="main-es2015.js" type="module"></script>',
9191
};
9292

9393
host.writeMultipleFiles(scripts);
9494
host.appendToFile('src/main.ts', '\nimport \'./input-script.js\';');
9595

9696
// Enable differential loading
97-
host.appendToFile('.browserslistrc', '\nIE 10');
97+
host.appendToFile('.browserslistrc', '\nIE 11');
9898

9999
// Remove styles so we don't have to account for them in the index.html order check.
100100
const { files } = await browserBuild(architect, host, target, {

packages/angular_devkit/build_angular/src/utils/build-options.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ export interface BuildOptions {
7979
experimentalRollupPass?: boolean;
8080
allowedCommonJsDependencies?: string[];
8181

82-
differentialLoadingMode?: boolean;
82+
differentialLoadingNeeded?: boolean;
8383
}
8484

8585
export interface WebpackTestOptions extends BuildOptions {

packages/angular_devkit/build_angular/src/utils/webpack-browser-config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ export async function generateWebpackConfig(
104104
if (profilingEnabled) {
105105
const esVersionInFileName = getEsVersionForFileName(
106106
tsConfig.options.target,
107-
buildOptions.differentialLoadingMode,
107+
buildOptions.differentialLoadingNeeded,
108108
);
109109

110110
const SpeedMeasurePlugin = await import('speed-measure-webpack-plugin');

packages/angular_devkit/build_angular/src/webpack/configs/browser.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export function getBrowserConfig(wco: WebpackConfigOptions): webpack.Configurati
5454
extraPlugins.push(getSourceMapDevTool(
5555
scriptsSourceMap,
5656
stylesSourceMap,
57-
buildOptions.differentialLoadingMode ? true : hiddenSourceMap,
57+
buildOptions.differentialLoadingNeeded && !buildOptions.watch ? true : hiddenSourceMap,
5858
false,
5959
));
6060
}

packages/angular_devkit/build_angular/src/webpack/configs/common.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ export function getCommonConfig(wco: WebpackConfigOptions): Configuration {
7777

7878
const targetInFileName = getEsVersionForFileName(
7979
tsConfig.options.target,
80-
buildOptions.differentialLoadingMode,
80+
buildOptions.differentialLoadingNeeded,
8181
);
8282

8383
if (buildOptions.main) {
@@ -128,7 +128,7 @@ export function getCommonConfig(wco: WebpackConfigOptions): Configuration {
128128
}
129129
}
130130

131-
const differentialLoadingMode = buildOptions.differentialLoadingMode;
131+
const differentialLoadingMode = buildOptions.differentialLoadingNeeded && !buildOptions.watch;
132132
if (platform !== 'server') {
133133
if (differentialLoadingMode || tsConfig.options.target === ScriptTarget.ES5) {
134134
const buildBrowserFeatures = new BuildBrowserFeatures(
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { expectFileToExist, replaceInFile } from '../../utils/fs';
2+
import { execAndWaitForOutputToMatch } from '../../utils/process';
3+
4+
export default async function () {
5+
await replaceInFile(
6+
'.browserslistrc',
7+
'not IE 11',
8+
'IE 11',
9+
);
10+
11+
await execAndWaitForOutputToMatch('ng', ['build', '--watch'], /Initial Total/i);
12+
await expectFileToExist('dist/test-project/runtime-es2015.js');
13+
await expectFileToExist('dist/test-project/main-es2015.js');
14+
}

0 commit comments

Comments
 (0)