Skip to content

Commit b57c01f

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

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,17 +100,10 @@ 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(
116108
itemsToBundle,
117109
esmFiles,
@@ -124,6 +116,7 @@ export async function buildAction(actionContext: BuildActionContext): Promise<Ex
124116
buildState.previousBundleResults,
125117
),
126118
diagnosePromise,
119+
collectedAssets ?? buildState.collectAssets(options, modifiedFiles),
127120
]);
128121
} catch (error) {
129122
assertIsError(error);
@@ -160,26 +153,17 @@ export async function buildAction(actionContext: BuildActionContext): Promise<Ex
160153
filesToEmit.push(...manifestFiles);
161154
}
162155

163-
const collectedAssets = await (collectedAssetsPromise ??
164-
buildState.collectAssets(options, modifiedFiles));
156+
collectedAssets ??= await buildState.collectAssets(options, modifiedFiles);
165157
filesToEmit.push(...collectedAssets.filesToEmit);
166158

167-
const emitPromise = emitFilesToDisk(filesToEmit, (file) =>
168-
path.posix.join(options.outputPath, file.path),
169-
);
170-
171159
const filesToDelete = buildState.recordEmittedOutputs(collectedAssets, manifestFiles);
172-
173160
if (filesToDelete.size) {
174-
await Promise.all([
175-
emitPromise,
176-
deleteFilesFromDisk(
177-
Array.from(filesToDelete, (file) => path.posix.join(options.outputPath, file)),
178-
),
179-
]);
180-
} else {
181-
await emitPromise;
161+
await deleteFilesFromDisk(
162+
Array.from(filesToDelete, (file) => path.posix.join(options.outputPath, file)),
163+
);
182164
}
165+
166+
await emitFilesToDisk(filesToEmit, (file) => path.posix.join(options.outputPath, file.path));
183167
} catch (error) {
184168
assertIsError(error);
185169
result.addError(error.message);

0 commit comments

Comments
 (0)