Skip to content

Commit 6b2a8e1

Browse files
committed
refactor(@angular-devkit/build-angular): remove virtualfs host usage from browser/dev-server
The virtualfs Host was only used for exist and directory checks during asset and file replacement option normalization within the browser and dev-server builders.
1 parent 2d7f268 commit 6b2a8e1

File tree

8 files changed

+13
-35
lines changed

8 files changed

+13
-35
lines changed

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import {
1212
targetFromTargetString,
1313
} from '@angular-devkit/architect';
1414
import { JsonObject, normalize, resolve } from '@angular-devkit/core';
15-
import { NodeJsSyncHost } from '@angular-devkit/core/node';
1615
import * as fs from 'fs';
1716
import * as path from 'path';
1817
import { BrowserBuilderOutput } from '../browser';
@@ -47,7 +46,6 @@ async function _renderUniversal(
4746
const zonePackage = require.resolve('zone.js', { paths: [root] });
4847
await import(zonePackage);
4948

50-
const host = new NodeJsSyncHost();
5149
const projectName = context.target && context.target.project;
5250
if (!projectName) {
5351
throw new Error('The builder requires a target.');
@@ -121,7 +119,6 @@ async function _renderUniversal(
121119

122120
if (browserOptions.serviceWorker) {
123121
await augmentAppWithServiceWorker(
124-
host,
125122
normalize(root),
126123
projectRoot,
127124
normalize(outputPath),

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

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77
*/
88
import { BuilderContext, BuilderOutput, createBuilder } from '@angular-devkit/architect';
99
import { EmittedFiles, WebpackLoggingCallback, runWebpack } from '@angular-devkit/build-webpack';
10-
import { getSystemPath, json, normalize, resolve, tags, virtualFs } from '@angular-devkit/core';
11-
import { NodeJsSyncHost } from '@angular-devkit/core/node';
10+
import { getSystemPath, json, normalize, resolve, tags } from '@angular-devkit/core';
1211
import * as fs from 'fs';
1312
import * as path from 'path';
1413
import { Observable, from } from 'rxjs';
@@ -127,7 +126,6 @@ export function getCompilerConfig(wco: WebpackConfigOptions): webpack.Configurat
127126
async function initialize(
128127
options: BrowserBuilderSchema,
129128
context: BuilderContext,
130-
host: virtualFs.Host<fs.Stats>,
131129
differentialLoadingNeeded: boolean,
132130
webpackConfigurationTransform?: ExecutionTransformer<webpack.Configuration>,
133131
): Promise<{
@@ -158,15 +156,13 @@ async function initialize(
158156
getCompilerConfig(wco),
159157
wco.buildOptions.webWorkerTsConfig ? getWorkerConfig(wco) : {},
160158
],
161-
host,
162159
{ differentialLoadingNeeded },
163160
);
164161

165162
// Validate asset option values if processed directly
166163
if (options.assets?.length && !adjustedOptions.assets?.length) {
167164
normalizeAssetPatterns(
168165
options.assets,
169-
new virtualFs.SyncDelegateHost(host),
170166
normalize(context.workspaceRoot),
171167
normalize(projectRoot),
172168
projectSourceRoot === undefined ? undefined : normalize(projectSourceRoot),
@@ -199,7 +195,6 @@ export function buildWebpackBrowser(
199195
indexHtml?: IndexHtmlTransform;
200196
} = {},
201197
): Observable<BrowserBuilderOutput> {
202-
const host = new NodeJsSyncHost();
203198
const root = normalize(context.workspaceRoot);
204199

205200
const projectName = context.target?.project;
@@ -248,7 +243,7 @@ export function buildWebpackBrowser(
248243
}
249244

250245
return {
251-
...(await initialize(options, context, host, isDifferentialLoadingNeeded, transforms.webpackConfiguration)),
246+
...(await initialize(options, context, isDifferentialLoadingNeeded, transforms.webpackConfiguration)),
252247
buildBrowserFeatures,
253248
isDifferentialLoadingNeeded,
254249
target,
@@ -645,7 +640,6 @@ export function buildWebpackBrowser(
645640
await copyAssets(
646641
normalizeAssetPatterns(
647642
options.assets,
648-
new virtualFs.SyncDelegateHost(host),
649643
root,
650644
normalize(projectRoot),
651645
projectSourceRoot === undefined ? undefined : normalize(projectSourceRoot),
@@ -719,7 +713,6 @@ export function buildWebpackBrowser(
719713
for (const [locale, outputPath] of outputPaths.entries()) {
720714
try {
721715
await augmentAppWithServiceWorker(
722-
host,
723716
root,
724717
normalize(projectRoot),
725718
normalize(outputPath),

packages/angular_devkit/build_angular/src/dev-server/index.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import {
1313
runWebpackDevServer,
1414
} from '@angular-devkit/build-webpack';
1515
import { json, tags } from '@angular-devkit/core';
16-
import { NodeJsSyncHost } from '@angular-devkit/core/node';
1716
import * as path from 'path';
1817
import { Observable, from, of } from 'rxjs';
1918
import { concatMap, switchMap } from 'rxjs/operators';
@@ -83,7 +82,6 @@ export function serveWebpackBrowser(
8382
assertCompatibleAngularVersion(workspaceRoot, logger);
8483

8584
const browserTarget = targetFromTargetString(options.browserTarget);
86-
const host = new NodeJsSyncHost();
8785

8886
async function setup(): Promise<{
8987
browserOptions: json.JsonObject & BrowserBuilderSchema;
@@ -148,7 +146,6 @@ export function serveWebpackBrowser(
148146
getCompilerConfig(wco),
149147
browserOptions.webWorkerTsConfig ? getWorkerConfig(wco) : {},
150148
],
151-
host,
152149
devServerOptions,
153150
);
154151

packages/angular_devkit/build_angular/src/utils/normalize-asset-patterns.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@ import {
1010
Path,
1111
basename,
1212
dirname,
13+
getSystemPath,
1314
join,
1415
normalize,
1516
relative,
1617
resolve,
17-
virtualFs,
1818
} from '@angular-devkit/core';
19+
import { statSync } from 'fs';
1920
import { AssetPattern, AssetPatternClass } from '../browser/schema';
2021

2122

@@ -27,7 +28,6 @@ export class MissingAssetSourceRootException extends BaseException {
2728

2829
export function normalizeAssetPatterns(
2930
assetPatterns: AssetPattern[],
30-
host: virtualFs.SyncDelegateHost,
3131
root: Path,
3232
projectRoot: Path,
3333
maybeSourceRoot: Path | undefined,
@@ -56,7 +56,7 @@ export function normalizeAssetPatterns(
5656
let isDirectory = false;
5757

5858
try {
59-
isDirectory = host.isDirectory(resolvedAssetPath);
59+
isDirectory = statSync(getSystemPath(resolvedAssetPath)).isDirectory();
6060
} catch {
6161
isDirectory = true;
6262
}

packages/angular_devkit/build_angular/src/utils/normalize-builder-schema.ts

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

1010

11-
import { Path, virtualFs } from '@angular-devkit/core';
11+
import { Path } from '@angular-devkit/core';
1212
import {
1313
AssetPatternClass,
1414
Schema as BrowserBuilderSchema,
@@ -35,19 +35,17 @@ export type NormalizedBrowserBuilderSchema = BrowserBuilderSchema & BuildOptions
3535
};
3636

3737
export function normalizeBrowserSchema(
38-
host: virtualFs.Host<{}>,
3938
root: Path,
4039
projectRoot: Path,
4140
sourceRoot: Path | undefined,
4241
options: BrowserBuilderSchema,
4342
): NormalizedBrowserBuilderSchema {
44-
const syncHost = new virtualFs.SyncDelegateHost(host);
4543
const normalizedSourceMapOptions = normalizeSourceMaps(options.sourceMap || false);
4644

4745
return {
4846
...options,
49-
assets: normalizeAssetPatterns(options.assets || [], syncHost, root, projectRoot, sourceRoot),
50-
fileReplacements: normalizeFileReplacements(options.fileReplacements || [], syncHost, root),
47+
assets: normalizeAssetPatterns(options.assets || [], root, projectRoot, sourceRoot),
48+
fileReplacements: normalizeFileReplacements(options.fileReplacements || [], root),
5149
optimization: normalizeOptimization(options.optimization),
5250
sourceMap: normalizedSourceMapOptions,
5351
preserveSymlinks: options.preserveSymlinks === undefined ? process.execArgv.includes('--preserve-symlinks') : options.preserveSymlinks,

packages/angular_devkit/build_angular/src/utils/normalize-file-replacements.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import {
1212
getSystemPath,
1313
join,
1414
normalize,
15-
virtualFs,
1615
} from '@angular-devkit/core';
16+
import { existsSync } from 'fs';
1717
import { FileReplacement } from '../browser/schema';
1818

1919

@@ -30,7 +30,6 @@ export interface NormalizedFileReplacement {
3030

3131
export function normalizeFileReplacements(
3232
fileReplacements: FileReplacement[],
33-
host: virtualFs.SyncDelegateHost,
3433
root: Path,
3534
): NormalizedFileReplacement[] {
3635
if (fileReplacements.length === 0) {
@@ -41,11 +40,11 @@ export function normalizeFileReplacements(
4140
.map(replacement => normalizeFileReplacement(replacement, root));
4241

4342
for (const { replace, with: replacementWith } of normalizedReplacement) {
44-
if (!host.exists(replacementWith)) {
43+
if (!existsSync(getSystemPath(replacementWith))) {
4544
throw new MissingFileReplacementException(getSystemPath(replacementWith));
4645
}
4746

48-
if (!host.exists(replace)) {
47+
if (!existsSync(getSystemPath(replace))) {
4948
throw new MissingFileReplacementException(getSystemPath(replace));
5049
}
5150
}

packages/angular_devkit/build_angular/src/utils/service-worker.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
tags,
1616
virtualFs,
1717
} from '@angular-devkit/core';
18+
import { NodeJsSyncHost } from '@angular-devkit/core/node';
1819
import {
1920
Filesystem,
2021
Generator,
@@ -70,13 +71,13 @@ class CliFilesystem implements Filesystem {
7071
}
7172

7273
export async function augmentAppWithServiceWorker(
73-
host: virtualFs.Host,
7474
projectRoot: Path,
7575
appRoot: Path,
7676
outputPath: Path,
7777
baseHref: string,
7878
ngswConfigPath?: string,
7979
): Promise<void> {
80+
const host = new NodeJsSyncHost();
8081
const distPath = normalize(outputPath);
8182
const systemProjectRoot = getSystemPath(projectRoot);
8283

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

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,7 @@ import {
1111
logging,
1212
normalize,
1313
resolve,
14-
virtualFs,
1514
} from '@angular-devkit/core';
16-
import { NodeJsSyncHost } from '@angular-devkit/core/node';
17-
import * as fs from 'fs';
1815
import * as path from 'path';
1916
import * as webpack from 'webpack';
2017
import { merge as webpackMerge } from 'webpack-merge';
@@ -125,15 +122,13 @@ export async function generateI18nBrowserWebpackConfigFromContext(
125122
options: BrowserBuilderSchema,
126123
context: BuilderContext,
127124
webpackPartialGenerator: (wco: BrowserWebpackConfigOptions) => webpack.Configuration[],
128-
host: virtualFs.Host<fs.Stats> = new NodeJsSyncHost(),
129125
extraBuildOptions: Partial<NormalizedBrowserBuilderSchema> = {},
130126
): Promise<{ config: webpack.Configuration; projectRoot: string; projectSourceRoot?: string, i18n: I18nOptions }> {
131127
const { buildOptions, i18n } = await configureI18nBuild(context, options);
132128
const result = await generateBrowserWebpackConfigFromContext(
133129
buildOptions,
134130
context,
135131
webpackPartialGenerator,
136-
host,
137132
extraBuildOptions,
138133
);
139134
const config = result.config;
@@ -195,7 +190,6 @@ export async function generateBrowserWebpackConfigFromContext(
195190
options: BrowserBuilderSchema,
196191
context: BuilderContext,
197192
webpackPartialGenerator: (wco: BrowserWebpackConfigOptions) => webpack.Configuration[],
198-
host: virtualFs.Host<fs.Stats> = new NodeJsSyncHost(),
199193
extraBuildOptions: Partial<NormalizedBrowserBuilderSchema> = {},
200194
): Promise<{ config: webpack.Configuration; projectRoot: string; projectSourceRoot?: string }> {
201195
const projectName = context.target && context.target.project;
@@ -212,7 +206,6 @@ export async function generateBrowserWebpackConfigFromContext(
212206
: undefined;
213207

214208
const normalizedOptions = normalizeBrowserSchema(
215-
host,
216209
workspaceRoot,
217210
projectRoot,
218211
sourceRoot,

0 commit comments

Comments
 (0)