From 985b74a2da52ef227ddf3dafc1fed16dc4846cd4 Mon Sep 17 00:00:00 2001 From: s1gr1d <32902192+s1gr1d@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:43:56 +0100 Subject: [PATCH 1/3] fix(plugin-manager): Respect `sourcemap.ignore` values for injecting debugIDs --- .../src/build-plugin-manager.ts | 8 ++++++- packages/bundler-plugin-core/src/utils.ts | 20 ++++++++++++++++ .../bundler-plugin-core/test/utils.test.ts | 23 +++++++++++++++++++ yarn.lock | 13 ++--------- 4 files changed, 52 insertions(+), 12 deletions(-) diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index f130179e..ce9442e5 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -23,6 +23,7 @@ import { arrayify, getProjects, getTurborepoEnvPassthroughWarning, + serializeIgnoreOptions, stripQueryAndHashFromPath, } from "./utils"; import { glob } from "glob"; @@ -554,8 +555,13 @@ export function createSentryBuildPluginManager( try { const cliInstance = createCliInstance(options); await cliInstance.execute( - ["sourcemaps", "inject", ...buildArtifactPaths], options.debug ?? false + [ + "sourcemaps", + "inject", + ...serializeIgnoreOptions(options.sourcemaps?.ignore), + ...buildArtifactPaths, + ], ); } catch (e) { sentryScope.captureException('Error in "debugIdInjectionPlugin" writeBundle hook'); diff --git a/packages/bundler-plugin-core/src/utils.ts b/packages/bundler-plugin-core/src/utils.ts index a1aebf11..64400a29 100644 --- a/packages/bundler-plugin-core/src/utils.ts +++ b/packages/bundler-plugin-core/src/utils.ts @@ -408,3 +408,23 @@ export function getProjects(project: string | string[] | undefined): string[] | return undefined; } + +/** + * Inlined functionality from @sentry/cli helper code to add `--ignore` options. + * + * Temporary workaround until we expose a function for injecting debug IDs. Currently, we directly call `execute` with CLI args to inject them. + */ +export function serializeIgnoreOptions(ignoreValue: string | string[] | undefined): string[] { + const DEFAULT_IGNORE = ["node_modules"]; + + const ignoreOptions: string[] = Array.isArray(ignoreValue) + ? ignoreValue + : typeof ignoreValue === "string" + ? [ignoreValue] + : DEFAULT_IGNORE; + + return ignoreOptions.reduce( + (acc, value) => acc.concat(["--ignore", String(value)]), + [] as string[] + ); +} diff --git a/packages/bundler-plugin-core/test/utils.test.ts b/packages/bundler-plugin-core/test/utils.test.ts index 90fe9666..bcb5e4cc 100644 --- a/packages/bundler-plugin-core/test/utils.test.ts +++ b/packages/bundler-plugin-core/test/utils.test.ts @@ -5,6 +5,7 @@ import { getPackageJson, parseMajorVersion, replaceBooleanFlagsInCode, + serializeIgnoreOptions, stringToUUID, } from "../src/utils"; @@ -270,3 +271,25 @@ describe("generateModuleMetadataInjectorCode", () => { expect(generatedCode).toMatchSnapshot(); }); }); + +describe("serializeIgnoreOptions", () => { + it("returns default ignore options when undefined", () => { + const result = serializeIgnoreOptions(undefined); + expect(result).toEqual(["--ignore", "node_modules"]); + }); + + it("handles array of ignore patterns", () => { + const result = serializeIgnoreOptions(["dist", "**/build/**", "*.log"]); + expect(result).toEqual(["--ignore", "dist", "--ignore", "**/build/**", "--ignore", "*.log"]); + }); + + it("handles single string pattern", () => { + const result = serializeIgnoreOptions("dist"); + expect(result).toEqual(["--ignore", "dist"]); + }); + + it("handles empty array", () => { + const result = serializeIgnoreOptions([]); + expect(result).toEqual([]); + }); +}); diff --git a/yarn.lock b/yarn.lock index 11b47c93..5f7ab0c9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8109,15 +8109,6 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jackspeak@^2.0.3: - version "2.2.1" - resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz#655e8cf025d872c9c03d3eb63e8f0c024fef16a6" - integrity sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - jackspeak@^3.1.2: version "3.4.3" resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" @@ -9608,7 +9599,7 @@ minimatch@^8.0.2: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.0, minimatch@^9.0.1: +minimatch@^9.0.0: version "9.0.1" resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz#8a555f541cf976c622daf078bb28f29fb927c253" integrity sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w== @@ -10764,7 +10755,7 @@ path-scurry@^1.11.1: lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" -path-scurry@^1.6.1, path-scurry@^1.7.0: +path-scurry@^1.6.1: version "1.9.2" resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.9.2.tgz#90f9d296ac5e37e608028e28a447b11d385b3f63" integrity sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg== From c7eaa5e4267c9281c81c44248312f8505da7dccb Mon Sep 17 00:00:00 2001 From: s1gr1d <32902192+s1gr1d@users.noreply.github.com> Date: Thu, 15 Jan 2026 12:21:36 +0100 Subject: [PATCH 2/3] fix order --- packages/bundler-plugin-core/src/build-plugin-manager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/bundler-plugin-core/src/build-plugin-manager.ts b/packages/bundler-plugin-core/src/build-plugin-manager.ts index ce9442e5..e574971b 100644 --- a/packages/bundler-plugin-core/src/build-plugin-manager.ts +++ b/packages/bundler-plugin-core/src/build-plugin-manager.ts @@ -555,13 +555,13 @@ export function createSentryBuildPluginManager( try { const cliInstance = createCliInstance(options); await cliInstance.execute( - options.debug ?? false [ "sourcemaps", "inject", ...serializeIgnoreOptions(options.sourcemaps?.ignore), ...buildArtifactPaths, ], + options.debug ?? false ); } catch (e) { sentryScope.captureException('Error in "debugIdInjectionPlugin" writeBundle hook'); From 19271c189b8fbfc8147423dab7b6ed77c1555aa5 Mon Sep 17 00:00:00 2001 From: s1gr1d <32902192+s1gr1d@users.noreply.github.com> Date: Thu, 15 Jan 2026 14:03:21 +0100 Subject: [PATCH 3/3] fix tests --- .../bundler-plugin-core/test/build-plugin-manager.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/bundler-plugin-core/test/build-plugin-manager.test.ts b/packages/bundler-plugin-core/test/build-plugin-manager.test.ts index 1003d57c..daeb891b 100644 --- a/packages/bundler-plugin-core/test/build-plugin-manager.test.ts +++ b/packages/bundler-plugin-core/test/build-plugin-manager.test.ts @@ -434,7 +434,7 @@ describe("createSentryBuildPluginManager", () => { await buildPluginManager.injectDebugIds(buildArtifactPaths); expect(mockCliExecute).toHaveBeenCalledWith( - ["sourcemaps", "inject", "/path/to/1", "/path/to/2"], + ["sourcemaps", "inject", "--ignore", "node_modules", "/path/to/1", "/path/to/2"], false ); }); @@ -459,7 +459,7 @@ describe("createSentryBuildPluginManager", () => { await buildPluginManager.injectDebugIds(buildArtifactPaths); expect(mockCliExecute).toHaveBeenCalledWith( - ["sourcemaps", "inject", "/path/to/bundle"], + ["sourcemaps", "inject", "--ignore", "node_modules", "/path/to/bundle"], true ); });