Description
Add a default export to the @sentry/cloudflare/vite subpath, as an alias of sentryCloudflareVitePlugin, so the plugin can be imported under any name:
// vite.config.ts
import { cloudflare } from '@cloudflare/vite-plugin';
import sentry from '@sentry/cloudflare/vite';
import { defineConfig } from 'vite';
export default defineConfig({
plugins: [cloudflare(), sentry()],
});
sentryCloudflareVitePlugin stays the documented name, so this is additive and breaks nothing.
// packages/cloudflare/src/vite/index.ts
export default sentryCloudflareVitePlugin;
Why
- Most Vite plugins default-export, for example
@vitejs/plugin-react, vinext and nitro/vite. A default export matches what users expect at that place in the config.
- The call site reads better with a short local name:
plugins: [cloudflare(), sentry()].
- There is precedent in this repo:
@sentry/astro default-exports its integration, and @sentry/nuxt its module.
Notes
- The
./vite subpath currently also declares a require condition. In CJS, a default export is reached as require('@sentry/cloudflare/vite').default. The comment at the top of src/vite/index.ts says the CJS entry cannot resolve anyway (@sentry/server-utils/orchestrion/vite has no require condition), and Vite configs are ESM in practice, so this is acceptable.
- Sentry's other Vite plugins (
@sentry/vite-plugin, SvelteKit, SolidStart) use named exports only, so this makes the Cloudflare one the exception. The named export stays, and docs keep using it.
- The subpath exports more than the plugin (the options type today), so the JSDoc on the default export should state that it is an alias of
sentryCloudflareVitePlugin.
Scope
export default sentryCloudflareVitePlugin; in packages/cloudflare/src/vite/index.ts, with JSDoc.
- A test asserting the default export is the same function as the named one.
- Optionally a docs snippet showing the short import.
Description
Add a default export to the
@sentry/cloudflare/vitesubpath, as an alias ofsentryCloudflareVitePlugin, so the plugin can be imported under any name:sentryCloudflareVitePluginstays the documented name, so this is additive and breaks nothing.Why
@vitejs/plugin-react,vinextandnitro/vite. A default export matches what users expect at that place in the config.plugins: [cloudflare(), sentry()].@sentry/astrodefault-exports its integration, and@sentry/nuxtits module.Notes
./vitesubpath currently also declares arequirecondition. In CJS, a default export is reached asrequire('@sentry/cloudflare/vite').default. The comment at the top ofsrc/vite/index.tssays the CJS entry cannot resolve anyway (@sentry/server-utils/orchestrion/vitehas norequirecondition), and Vite configs are ESM in practice, so this is acceptable.@sentry/vite-plugin, SvelteKit, SolidStart) use named exports only, so this makes the Cloudflare one the exception. The named export stays, and docs keep using it.sentryCloudflareVitePlugin.Scope
export default sentryCloudflareVitePlugin;inpackages/cloudflare/src/vite/index.ts, with JSDoc.