@@ -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