From 4a8855aef4e1d7d11b43ad89caf10ec23da11755 Mon Sep 17 00:00:00 2001 From: Paris Outen Date: Wed, 10 Jul 2024 10:26:10 +0800 Subject: [PATCH 1/3] fix: Keep the deletion task executed last --- .../src/plugins/sourcemap-deletion.ts | 72 ++++++++++--------- 1 file changed, 38 insertions(+), 34 deletions(-) diff --git a/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts b/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts index 53043df0..3a1920fe 100644 --- a/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts +++ b/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts @@ -24,41 +24,45 @@ export function fileDeletionPlugin({ }: FileDeletionPlugin): UnpluginOptions { return { name: "sentry-file-deletion-plugin", - async writeBundle() { - try { - if (filesToDeleteAfterUpload !== undefined) { - const filePathsToDelete = await glob(filesToDeleteAfterUpload, { - absolute: true, - nodir: true, - }); - - logger.debug( - "Waiting for dependencies on generated files to be freed before deleting..." - ); - - await dependenciesAreFreedPromise; - - filePathsToDelete.forEach((filePathToDelete) => { - logger.debug(`Deleting asset after upload: ${filePathToDelete}`); - }); - - await Promise.all( - filePathsToDelete.map((filePathToDelete) => - fs.promises.rm(filePathToDelete, { force: true }).catch((e) => { - // This is allowed to fail - we just don't do anything - logger.debug( - `An error occurred while attempting to delete asset: ${filePathToDelete}`, - e - ); - }) - ) - ); + writeBundle: { + sequential: true, + order: 'post', + async handler() { + try { + if (filesToDeleteAfterUpload !== undefined) { + const filePathsToDelete = await glob(filesToDeleteAfterUpload, { + absolute: true, + nodir: true, + }); + + logger.debug( + "Waiting for dependencies on generated files to be freed before deleting..." + ); + + await dependenciesAreFreedPromise; + + filePathsToDelete.forEach((filePathToDelete) => { + logger.debug(`Deleting asset after upload: ${filePathToDelete}`); + }); + + await Promise.all( + filePathsToDelete.map((filePathToDelete) => + fs.promises.rm(filePathToDelete, { force: true }).catch((e) => { + // This is allowed to fail - we just don't do anything + logger.debug( + `An error occurred while attempting to delete asset: ${filePathToDelete}`, + e + ); + }) + ) + ); + } + } catch (e) { + sentryHub.captureException('Error in "sentry-file-deletion-plugin" buildEnd hook'); + await safeFlushTelemetry(sentryClient); + handleRecoverableError(e); } - } catch (e) { - sentryHub.captureException('Error in "sentry-file-deletion-plugin" buildEnd hook'); - await safeFlushTelemetry(sentryClient); - handleRecoverableError(e); - } + }, }, }; } From 83d456fb2d95da5b0216af6e0c9697f349f1c3ae Mon Sep 17 00:00:00 2001 From: Paris Outen Date: Wed, 10 Jul 2024 11:05:40 +0800 Subject: [PATCH 2/3] style: fix space --- packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts b/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts index 3a1920fe..7e45e72e 100644 --- a/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts +++ b/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts @@ -26,7 +26,7 @@ export function fileDeletionPlugin({ name: "sentry-file-deletion-plugin", writeBundle: { sequential: true, - order: 'post', + order: 'post', async handler() { try { if (filesToDeleteAfterUpload !== undefined) { From c9cb0695436d3a52c65a1dfbfd0d83ae66bc06c9 Mon Sep 17 00:00:00 2001 From: zhangrui11 Date: Wed, 10 Jul 2024 16:20:11 +0800 Subject: [PATCH 3/3] fix: Compatible with other plugins --- .../src/plugins/sourcemap-deletion.ts | 78 ++++++++++--------- 1 file changed, 40 insertions(+), 38 deletions(-) diff --git a/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts b/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts index 7e45e72e..6ea38fb2 100644 --- a/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts +++ b/packages/bundler-plugin-core/src/plugins/sourcemap-deletion.ts @@ -22,47 +22,49 @@ export function fileDeletionPlugin({ dependenciesAreFreedPromise, logger, }: FileDeletionPlugin): UnpluginOptions { + const writeBundle = async () => { + try { + if (filesToDeleteAfterUpload !== undefined) { + const filePathsToDelete = await glob(filesToDeleteAfterUpload, { + absolute: true, + nodir: true, + }); + + logger.debug("Waiting for dependencies on generated files to be freed before deleting..."); + + await dependenciesAreFreedPromise; + + filePathsToDelete.forEach((filePathToDelete) => { + logger.debug(`Deleting asset after upload: ${filePathToDelete}`); + }); + + await Promise.all( + filePathsToDelete.map((filePathToDelete) => + fs.promises.rm(filePathToDelete, { force: true }).catch((e) => { + // This is allowed to fail - we just don't do anything + logger.debug( + `An error occurred while attempting to delete asset: ${filePathToDelete}`, + e + ); + }) + ) + ); + } + } catch (e) { + sentryHub.captureException('Error in "sentry-file-deletion-plugin" buildEnd hook'); + await safeFlushTelemetry(sentryClient); + handleRecoverableError(e); + } + }; return { name: "sentry-file-deletion-plugin", - writeBundle: { - sequential: true, - order: 'post', - async handler() { - try { - if (filesToDeleteAfterUpload !== undefined) { - const filePathsToDelete = await glob(filesToDeleteAfterUpload, { - absolute: true, - nodir: true, - }); - - logger.debug( - "Waiting for dependencies on generated files to be freed before deleting..." - ); - - await dependenciesAreFreedPromise; - - filePathsToDelete.forEach((filePathToDelete) => { - logger.debug(`Deleting asset after upload: ${filePathToDelete}`); - }); - - await Promise.all( - filePathsToDelete.map((filePathToDelete) => - fs.promises.rm(filePathToDelete, { force: true }).catch((e) => { - // This is allowed to fail - we just don't do anything - logger.debug( - `An error occurred while attempting to delete asset: ${filePathToDelete}`, - e - ); - }) - ) - ); - } - } catch (e) { - sentryHub.captureException('Error in "sentry-file-deletion-plugin" buildEnd hook'); - await safeFlushTelemetry(sentryClient); - handleRecoverableError(e); - } + vite: { + writeBundle: { + sequential: true, + order: "post", + handler: writeBundle, }, }, + writeBundle, }; }