Skip to content

Commit b0921fa

Browse files
committed
fixup! perf(@angular/build): overlap library asset resolution and deduplicate output mkdir calls
1 parent 30362f7 commit b0921fa

1 file changed

Lines changed: 9 additions & 25 deletions

File tree

‎packages/angular/build/src/builders/library/pipeline/build-action.ts‎

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,7 @@ export async function buildAction(actionContext: BuildActionContext): Promise<Ex
7171
return result;
7272
}
7373

74-
let collectedAssetsPromise: CollectedAssets | Promise<CollectedAssets> | undefined =
75-
actionContext.collectedAssets;
74+
let collectedAssets = actionContext.collectedAssets;
7675
const filesToEmit: OutputFile[] = [];
7776

7877
if (shouldCompileEntryPoints) {
@@ -101,23 +100,17 @@ export async function buildAction(actionContext: BuildActionContext): Promise<Ex
101100
return result;
102101
}
103102

104-
if (!collectedAssetsPromise) {
105-
const promise = buildState.collectAssets(options, modifiedFiles);
106-
// Prevent unhandled promise rejections if bundling returns early.
107-
promise.catch(() => {});
108-
collectedAssetsPromise = promise;
109-
}
110-
111103
const itemsToBundle = collectEntryPointsToBundle(options, buildState);
112104
let bundleOutput: BundleEntryPointsOutput;
113105
try {
114-
[bundleOutput] = await Promise.all([
106+
[bundleOutput, , collectedAssets] = await Promise.all([
115107
bundleEntryPoints(itemsToBundle, esmFiles, dtsFiles, {
116108
...options,
117109
declarationMap,
118110
compilationMode,
119111
}),
120112
diagnosePromise,
113+
collectedAssets ?? buildState.collectAssets(options, modifiedFiles),
121114
]);
122115
} catch (error) {
123116
assertIsError(error);
@@ -154,26 +147,17 @@ export async function buildAction(actionContext: BuildActionContext): Promise<Ex
154147
filesToEmit.push(...manifestFiles);
155148
}
156149

157-
const collectedAssets = await (collectedAssetsPromise ??
158-
buildState.collectAssets(options, modifiedFiles));
150+
collectedAssets ??= await buildState.collectAssets(options, modifiedFiles);
159151
filesToEmit.push(...collectedAssets.filesToEmit);
160152

161-
const emitPromise = emitFilesToDisk(filesToEmit, (file) =>
162-
path.posix.join(options.outputPath, file.path),
163-
);
164-
165153
const filesToDelete = buildState.recordEmittedOutputs(collectedAssets, manifestFiles);
166-
167154
if (filesToDelete.size) {
168-
await Promise.all([
169-
emitPromise,
170-
deleteFilesFromDisk(
171-
Array.from(filesToDelete, (file) => path.posix.join(options.outputPath, file)),
172-
),
173-
]);
174-
} else {
175-
await emitPromise;
155+
await deleteFilesFromDisk(
156+
Array.from(filesToDelete, (file) => path.posix.join(options.outputPath, file)),
157+
);
176158
}
159+
160+
await emitFilesToDisk(filesToEmit, (file) => path.posix.join(options.outputPath, file.path));
177161
} catch (error) {
178162
assertIsError(error);
179163
result.addError(error.message);

0 commit comments

Comments
 (0)