Skip to content

Commit 78f5c28

Browse files
hanslmgechev
authored andcommitted
refactor(@angular-devkit/build-angular): clean up some interfaces and schemas
Remove the manually maintained schema.d.ts from the browser builder, and use the Schema JSON file to generate it. This had a lot of repercussions around the whole build-angular code base and the different interfaces that were manually kept.
1 parent 13c214a commit 78f5c28

40 files changed

+269
-669
lines changed

packages/angular_devkit/build_angular/src/angular-cli-files/models/build-options.ts

+8-8
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,21 @@
1111
import { logging } from '@angular-devkit/core';
1212
import * as ts from 'typescript'; // tslint:disable-line:no-implicit-dependencies
1313
import {
14-
AssetPatternObject,
14+
AssetPatternClass,
1515
Budget,
16-
CurrentFileReplacement,
1716
ExtraEntryPoint,
18-
NormalizedOptimization,
19-
NormalizedSourceMaps,
17+
OptimizationClass,
18+
SourceMapClass,
2019
} from '../../browser/schema';
20+
import { NormalizedFileReplacement } from '../../utils/normalize-file-replacements';
2121

2222
export interface BuildOptions {
23-
optimization: NormalizedOptimization;
23+
optimization: OptimizationClass;
2424
environment?: string;
2525
outputPath: string;
2626
resourcesOutputPath?: string;
2727
aot?: boolean;
28-
sourceMap: NormalizedSourceMaps;
28+
sourceMap: SourceMapClass;
2929
/** @deprecated use sourceMap instead */
3030
vendorSourceMap?: boolean;
3131
/** @deprecated */
@@ -64,13 +64,13 @@ export interface BuildOptions {
6464
index: string;
6565
polyfills?: string;
6666
budgets: Budget[];
67-
assets: AssetPatternObject[];
67+
assets: AssetPatternClass[];
6868
scripts: ExtraEntryPoint[];
6969
styles: ExtraEntryPoint[];
7070
stylePreprocessorOptions?: { includePaths: string[] };
7171
lazyModules: string[];
7272
platform?: 'browser' | 'server';
73-
fileReplacements: CurrentFileReplacement[];
73+
fileReplacements: NormalizedFileReplacement[];
7474
/** @deprecated use only for compatibility in 8.x; will be removed in 9.0 */
7575
rebaseRootRelativeCssUrls?: boolean;
7676
}

packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/browser.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@ export function getBrowserConfig(wco: WebpackConfigOptions) {
6767

6868
if (!isEval && (scriptsSourceMap || stylesSourceMap)) {
6969
extraPlugins.push(getSourceMapDevTool(
70-
scriptsSourceMap,
71-
stylesSourceMap,
70+
!!scriptsSourceMap,
71+
!!stylesSourceMap,
7272
hiddenSourceMap,
7373
));
7474
}

packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/common.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { tags } from '@angular-devkit/core';
99
import * as CopyWebpackPlugin from 'copy-webpack-plugin';
1010
import * as path from 'path';
1111
import { HashedModuleIdsPlugin, debug } from 'webpack';
12-
import { AssetPatternObject } from '../../../browser/schema';
12+
import { AssetPatternClass } from '../../../browser/schema';
1313
import { BundleBudgetPlugin } from '../../plugins/bundle-budget';
1414
import { CleanCssWebpackPlugin } from '../../plugins/cleancss-webpack-plugin';
1515
import { ScriptsWebpackPlugin } from '../../plugins/scripts-webpack-plugin';
@@ -103,7 +103,7 @@ export function getCommonConfig(wco: WebpackConfigOptions) {
103103
prev.push({
104104
bundleName,
105105
paths: [resolvedPath],
106-
lazy: curr.lazy,
106+
lazy: curr.lazy || false,
107107
});
108108
}
109109

@@ -129,7 +129,7 @@ export function getCommonConfig(wco: WebpackConfigOptions) {
129129

130130
// process asset entries
131131
if (buildOptions.assets) {
132-
const copyWebpackPluginPatterns = buildOptions.assets.map((asset: AssetPatternObject) => {
132+
const copyWebpackPluginPatterns = buildOptions.assets.map((asset: AssetPatternClass) => {
133133

134134
// Resolve input paths relative to workspace root and add slash at the end.
135135
asset.input = path.resolve(root, asset.input).replace(/\\/g, '/');

packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/server.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ export function getServerConfig(wco: WebpackConfigOptions) {
2121
const { scripts, styles, hidden } = wco.buildOptions.sourceMap;
2222

2323
extraPlugins.push(getSourceMapDevTool(
24-
scripts,
25-
styles,
26-
hidden,
24+
scripts || false,
25+
styles || false,
26+
hidden || false,
2727
));
2828
}
2929

packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ export function getTestConfig(
6060
const { styles, scripts } = wco.buildOptions.sourceMap;
6161

6262
extraPlugins.push(getSourceMapDevTool(
63-
styles,
64-
scripts,
63+
styles || false,
64+
scripts || false,
6565
false,
6666
true,
6767
));

packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/utils.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
import * as path from 'path';
1212
import { basename, normalize } from '@angular-devkit/core';
13-
import { ExtraEntryPoint, ExtraEntryPointObject } from '../../../browser/schema';
13+
import { ExtraEntryPoint, ExtraEntryPointClass } from '../../../browser/schema';
1414
import { SourceMapDevToolPlugin } from 'webpack';
1515

1616
export const ngAppResolve = (resolvePath: string): string => {
@@ -36,7 +36,7 @@ export function getOutputHashFormat(option: string, length = 20): HashFormat {
3636
return hashFormats[option] || hashFormats['none'];
3737
}
3838

39-
export type NormalizedEntryPoint = ExtraEntryPointObject & { bundleName: string };
39+
export type NormalizedEntryPoint = ExtraEntryPointClass & { bundleName: string };
4040

4141
export function normalizeExtraEntryPoints(
4242
extraEntryPoints: ExtraEntryPoint[],

packages/angular_devkit/build_angular/src/app-shell/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { Observable, forkJoin, from, merge, of, throwError } from 'rxjs';
1616
import { concatMap, map, switchMap } from 'rxjs/operators';
1717
import { requireProjectModule } from '../angular-cli-files/utilities/require-project-module';
1818
import { augmentAppWithServiceWorker } from '../angular-cli-files/utilities/service-worker';
19-
import { BrowserBuilderSchema } from '../browser/schema';
19+
import { Schema as BrowserBuilderSchema } from '../browser/schema';
2020
import { BuildWebpackServerSchema } from '../server/schema';
2121
import { BuildWebpackAppShellSchema } from './schema';
2222

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

+8-6
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { LoggingCallback, WebpackBuilder } from '@angular-devkit/build-webpack';
1515
import { Path, getSystemPath, join, normalize, resolve, virtualFs } from '@angular-devkit/core';
1616
import * as fs from 'fs';
1717
import { Observable, concat, of, throwError } from 'rxjs';
18-
import { concatMap, last, tap } from 'rxjs/operators';
18+
import { concatMap, last } from 'rxjs/operators';
1919
import * as ts from 'typescript'; // tslint:disable-line:no-implicit-dependencies
2020
import { WebpackConfigOptions } from '../angular-cli-files/models/build-options';
2121
import {
@@ -34,8 +34,8 @@ import {
3434
statsToString,
3535
statsWarningsToString,
3636
} from '../angular-cli-files/utilities/stats';
37-
import { defaultProgress, normalizeBuilderSchema } from '../utils';
38-
import { BrowserBuilderSchema, NormalizedBrowserBuilderSchema } from './schema';
37+
import { NormalizedBrowserBuilderSchema, defaultProgress, normalizeBrowserSchema } from '../utils';
38+
import { Schema as BrowserBuilderSchema } from './schema';
3939
const SpeedMeasurePlugin = require('speed-measure-webpack-plugin');
4040
const webpackMerge = require('webpack-merge');
4141

@@ -58,10 +58,12 @@ export class BrowserBuilder implements Builder<BrowserBuilderSchema> {
5858
const webpackBuilder = this.createWebpackBuilder({ ...this.context, host });
5959
const getLoggingCb = this.createLoggingFactory();
6060

61-
const options = normalizeBuilderSchema(
61+
const options = normalizeBrowserSchema(
6262
host,
6363
root,
64-
builderConfig,
64+
resolve(root, builderConfig.root),
65+
builderConfig.sourceRoot,
66+
builderConfig.options,
6567
);
6668

6769
return of(null).pipe(
@@ -76,7 +78,7 @@ export class BrowserBuilder implements Builder<BrowserBuilderSchema> {
7678
return throwError(e);
7779
}
7880

79-
return webpackBuilder.runWebpack(webpackConfig, getLoggingCb(options.verbose));
81+
return webpackBuilder.runWebpack(webpackConfig, getLoggingCb(options.verbose || false));
8082
}),
8183
concatMap(buildEvent => {
8284
if (buildEvent.success && !options.watch && options.serviceWorker) {

0 commit comments

Comments
 (0)