This document serves as a migration guide, documenting all breaking changes between major versions of the Sentry bundler plugins.
- Removed
injectReleasesMapoption. If you need to inject values based on the build, please use your bundler's way of injecting values (rollup, vite, webpack, esbuild). - The minimum compatible version of rollup is version
3.2.0. - Removed functionality for the
releaseInjectionTargetsoption. @sentry/bundler-plugin-corewill no longer export the individual plugins but a factory function to create them.- Removed
customHeaderoption in favor ofheadersoption which allows for multiple headers to be attached to outgoing requests. - The
cliBinaryExistsfunction was renamed tosentryCliBinaryExists - Removed the
configFileoption. Options should now be set explicitly or via environment variables. This also means that.sentryclircfiles will no longer work as a means of configuration. Please manually pass in options, or use a configuration file (Webpack plugin docs, Vite plugin docs, esbuild plugin docs, Rollup plugin docs). - The minimum supported Node.js version is now 14 and newer.
- Removed
dryRunoption.
Version 2 of @sentry/webpack-plugin is a complete rewrite of version 1, relying on bundler-agnostic code (based on unjs/unplugin). While we tried to keep changes to v1 of the webpack plugin minimal, a adjustments are nevertheless necessary:
Previously, to use the plugin, you had to create a new class of the SentryCLIPlugin class.
In version 2, you simply need to call a function and pass the initialization options to it:
// old initialization:
import SentryCliPlugin from "@sentry/webpack-plugin";
new SentryCliPlugin({
// ... options
});
// new initialization:
import { sentryWebpackPlugin } from "@sentry/webpack-plugin";
sentryWebpackPlugin({
// ... options
});The include option was removed in favour of the new sourcemaps option. If you cannot migrate to the sourcemaps, include is still avaliable as the uploadLegacySourcemaps option.
Use the sourcemaps.assets and sourcemaps.ignore options to indicate to the plugin which sourcemaps should be uploaded to Sentry. The plugin now also exposes sourcemaps.deleteAfterUpload to delete your sourcemaps after they have been uploaded to Sentry. With the sourcemaps options, you no longer need to set filename transforms like urlPrefix because the plugin uses a new debug IDs system to associate sourcemaps to your bundles.
// old initialization:
import SentryWebpackPlugin from "@sentry/webpack-plugin";
new SentryWebpackPlugin({
include: {
paths: ["./path1", "./path2"],
ignore: ["./path2/ignore"],
urlPrefix: "~/static/js",
},
});
// new initialization:
import { sentryWebpackPlugin } from "@sentry/webpack-plugin";
sentryWebpackPlugin({
sourcemaps: {
assets: ["./path1/**", "./path2/**"],
ignore: ["./path2/ignore/**"],
deleteFilesAfterUpload: ["./path1/**/*.map", "./path2/**/*.map"],
},
});Previously all the plugins were exported as default exports.
Moving forward, with version 0.4.x of the plugins, all exports become named exports:
import sentryVitePlugin from "@sentry/vite-plugin";
// becomes
import { sentryVitePlugin } from "@sentry/vite-plugin";
import sentryEsbuildPlugin from "@sentry/esbuild-plugin";
// becomes
import { sentryEsbuildPlugin } from "@sentry/esbuild-plugin";
import sentryRollupPlugin from "@sentry/rollup-plugin";
// becomes
import { sentryRollupPlugin } from "@sentry/rollup-plugin";The Options type was a bit too generic for our taste so we renamed it:
import type { Options } from "@sentry/vite-plugin";
// becomes
import type { SentryVitePluginOptions } from "@sentry/vite-plugin";
import type { Options } from "@sentry/esbuild-plugin";
// becomes
import type { SentryEsbuildPluginOptions } from "@sentry/esbuild-plugin";
import type { Options } from "@sentry/rollup-plugin";
// becomes
import type { SentryRollupPluginOptions } from "@sentry/rollup-plugin";Previously the plugins injected a Sentry release value into every module that was processed. This approach caused problems in some cases so moving forward, they will only inject the release value into entrypoints by default.
In case you need more fine grained control over which modules should have a release value, you can use the releaseInjectionTargets option.
We removed the customHeader option in favor of the headers option.