diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index 9a31e287..2c460f8b 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -73,7 +73,11 @@ const sentryUnplugin = sentryUnpluginFactory({ bundleSizeOptimizationsPlugin: viteBundleSizeOptimizationsPlugin, }); -export const sentryVitePlugin: (options?: Options) => VitePlugin[] = sentryUnplugin.vite; +export const sentryVitePlugin = (options?: Options): VitePlugin[] => { + const result = sentryUnplugin.vite(options); + // unplugin returns a single plugin instead of an array when only one plugin is created, so we normalize this here. + return Array.isArray(result) ? result : [result]; +}; export type { Options as SentryVitePluginOptions } from "@sentry/bundler-plugin-core"; export { sentryCliBinaryExists } from "@sentry/bundler-plugin-core"; diff --git a/packages/vite-plugin/test/public-api.test.ts b/packages/vite-plugin/test/public-api.test.ts index 22bec8ea..8c311783 100644 --- a/packages/vite-plugin/test/public-api.test.ts +++ b/packages/vite-plugin/test/public-api.test.ts @@ -32,4 +32,17 @@ describe("sentryVitePlugin", () => { ]) ); }); + + it("returns an array of Vite pluginswhen unplugin returns a single plugin", () => { + const plugins = sentryVitePlugin({ + authToken: "test-token", + org: "test-org", + project: "test-project", + disable: true, // This causes unplugin to return only the noop plugin + }); + + expect(Array.isArray(plugins)).toBe(true); + expect(plugins.length).toBeGreaterThanOrEqual(1); + expect(plugins[0]).toHaveProperty("name"); + }); });