From 7ccd59f907cfa5f44f89380638fd9f653bcac27f Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Tue, 6 Oct 2026 11:34:50 +0100 Subject: [PATCH 1/7] feat(bundler-plugins): Publish standalone webpack, vite, rollup and esbuild plugins Move the four wrapper packages from sentry-javascript-bundler-plugins into packages/legacy. Each one re-exports the matching @sentry/bundler-plugins subpath and now releases in lockstep with the SDK. --- .craft.yml | 12 ++++ .github/ISSUE_TEMPLATE/bug.yml | 4 ++ .github/workflows/build.yml | 4 +- .github/workflows/issue-package-label.yml | 12 ++++ CHANGELOG.md | 6 ++ README.md | 7 ++ package.json | 4 ++ packages/bundler-plugins/README.md | 12 ++-- packages/legacy/esbuild-plugin/.gitignore | 2 + packages/legacy/esbuild-plugin/LICENSE | 29 +++++++++ packages/legacy/esbuild-plugin/README.md | 45 +++++++++++++ packages/legacy/esbuild-plugin/package.json | 56 ++++++++++++++++ .../esbuild-plugin/rollup.npm.config.mjs | 12 ++++ packages/legacy/esbuild-plugin/src/index.ts | 2 + .../legacy/esbuild-plugin/test/index.test.ts | 14 ++++ .../legacy/esbuild-plugin/test/tsconfig.json | 8 +++ packages/legacy/esbuild-plugin/tsconfig.json | 5 ++ .../legacy/esbuild-plugin/tsconfig.types.json | 12 ++++ packages/legacy/esbuild-plugin/vite.config.ts | 8 +++ packages/legacy/rollup-plugin/.gitignore | 2 + packages/legacy/rollup-plugin/LICENSE | 29 +++++++++ packages/legacy/rollup-plugin/README.md | 46 +++++++++++++ packages/legacy/rollup-plugin/package.json | 65 +++++++++++++++++++ .../rollup-plugin/rollup.npm.config.mjs | 7 ++ packages/legacy/rollup-plugin/src/index.ts | 1 + .../legacy/rollup-plugin/test/index.test.ts | 10 +++ .../legacy/rollup-plugin/test/tsconfig.json | 8 +++ packages/legacy/rollup-plugin/tsconfig.json | 5 ++ .../legacy/rollup-plugin/tsconfig.types.json | 12 ++++ packages/legacy/rollup-plugin/vite.config.ts | 8 +++ packages/legacy/vite-plugin/.gitignore | 2 + packages/legacy/vite-plugin/LICENSE | 29 +++++++++ packages/legacy/vite-plugin/README.md | 47 ++++++++++++++ packages/legacy/vite-plugin/package.json | 56 ++++++++++++++++ .../legacy/vite-plugin/rollup.npm.config.mjs | 7 ++ packages/legacy/vite-plugin/src/index.ts | 1 + .../legacy/vite-plugin/test/index.test.ts | 10 +++ .../legacy/vite-plugin/test/tsconfig.json | 8 +++ packages/legacy/vite-plugin/tsconfig.json | 5 ++ .../legacy/vite-plugin/tsconfig.types.json | 12 ++++ packages/legacy/vite-plugin/vite.config.ts | 8 +++ packages/legacy/webpack-plugin/.gitignore | 2 + packages/legacy/webpack-plugin/LICENSE | 29 +++++++++ packages/legacy/webpack-plugin/README.md | 44 +++++++++++++ packages/legacy/webpack-plugin/package.json | 64 ++++++++++++++++++ .../webpack-plugin/rollup.npm.config.mjs | 7 ++ packages/legacy/webpack-plugin/src/index.ts | 1 + .../legacy/webpack-plugin/src/webpack5.ts | 1 + .../legacy/webpack-plugin/test/index.test.ts | 15 +++++ .../legacy/webpack-plugin/test/tsconfig.json | 8 +++ packages/legacy/webpack-plugin/tsconfig.json | 5 ++ .../legacy/webpack-plugin/tsconfig.types.json | 12 ++++ packages/legacy/webpack-plugin/vite.config.ts | 8 +++ 53 files changed, 821 insertions(+), 7 deletions(-) create mode 100644 packages/legacy/esbuild-plugin/.gitignore create mode 100644 packages/legacy/esbuild-plugin/LICENSE create mode 100644 packages/legacy/esbuild-plugin/README.md create mode 100644 packages/legacy/esbuild-plugin/package.json create mode 100644 packages/legacy/esbuild-plugin/rollup.npm.config.mjs create mode 100644 packages/legacy/esbuild-plugin/src/index.ts create mode 100644 packages/legacy/esbuild-plugin/test/index.test.ts create mode 100644 packages/legacy/esbuild-plugin/test/tsconfig.json create mode 100644 packages/legacy/esbuild-plugin/tsconfig.json create mode 100644 packages/legacy/esbuild-plugin/tsconfig.types.json create mode 100644 packages/legacy/esbuild-plugin/vite.config.ts create mode 100644 packages/legacy/rollup-plugin/.gitignore create mode 100644 packages/legacy/rollup-plugin/LICENSE create mode 100644 packages/legacy/rollup-plugin/README.md create mode 100644 packages/legacy/rollup-plugin/package.json create mode 100644 packages/legacy/rollup-plugin/rollup.npm.config.mjs create mode 100644 packages/legacy/rollup-plugin/src/index.ts create mode 100644 packages/legacy/rollup-plugin/test/index.test.ts create mode 100644 packages/legacy/rollup-plugin/test/tsconfig.json create mode 100644 packages/legacy/rollup-plugin/tsconfig.json create mode 100644 packages/legacy/rollup-plugin/tsconfig.types.json create mode 100644 packages/legacy/rollup-plugin/vite.config.ts create mode 100644 packages/legacy/vite-plugin/.gitignore create mode 100644 packages/legacy/vite-plugin/LICENSE create mode 100644 packages/legacy/vite-plugin/README.md create mode 100644 packages/legacy/vite-plugin/package.json create mode 100644 packages/legacy/vite-plugin/rollup.npm.config.mjs create mode 100644 packages/legacy/vite-plugin/src/index.ts create mode 100644 packages/legacy/vite-plugin/test/index.test.ts create mode 100644 packages/legacy/vite-plugin/test/tsconfig.json create mode 100644 packages/legacy/vite-plugin/tsconfig.json create mode 100644 packages/legacy/vite-plugin/tsconfig.types.json create mode 100644 packages/legacy/vite-plugin/vite.config.ts create mode 100644 packages/legacy/webpack-plugin/.gitignore create mode 100644 packages/legacy/webpack-plugin/LICENSE create mode 100644 packages/legacy/webpack-plugin/README.md create mode 100644 packages/legacy/webpack-plugin/package.json create mode 100644 packages/legacy/webpack-plugin/rollup.npm.config.mjs create mode 100644 packages/legacy/webpack-plugin/src/index.ts create mode 100644 packages/legacy/webpack-plugin/src/webpack5.ts create mode 100644 packages/legacy/webpack-plugin/test/index.test.ts create mode 100644 packages/legacy/webpack-plugin/test/tsconfig.json create mode 100644 packages/legacy/webpack-plugin/tsconfig.json create mode 100644 packages/legacy/webpack-plugin/tsconfig.types.json create mode 100644 packages/legacy/webpack-plugin/vite.config.ts diff --git a/.craft.yml b/.craft.yml index c5e537806bcb..a6a739ead8bc 100644 --- a/.craft.yml +++ b/.craft.yml @@ -145,6 +145,18 @@ targets: - name: npm id: '@sentry/bundler-plugins' includeNames: /^sentry-bundler-plugins-\d.*\.tgz$/ + - name: npm + id: '@sentry/esbuild-plugin' + includeNames: /^sentry-esbuild-plugin-\d.*\.tgz$/ + - name: npm + id: '@sentry/rollup-plugin' + includeNames: /^sentry-rollup-plugin-\d.*\.tgz$/ + - name: npm + id: '@sentry/vite-plugin' + includeNames: /^sentry-vite-plugin-\d.*\.tgz$/ + - name: npm + id: '@sentry/webpack-plugin' + includeNames: /^sentry-webpack-plugin-\d.*\.tgz$/ - name: npm id: '@sentry/typescript' includeNames: /^sentry-typescript-\d.*\.tgz$/ diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index 499244434f82..5f6a5a8fdf55 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -64,6 +64,10 @@ body: - '@sentry/tanstackstart-react' - '@sentry/vue' - '@sentry/wasm' + - '@sentry/esbuild-plugin' + - '@sentry/rollup-plugin' + - '@sentry/vite-plugin' + - '@sentry/webpack-plugin' - Sentry Browser Loader - Sentry Browser CDN bundle validations: diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a37d3618311f..b241886bb17b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -43,7 +43,9 @@ env: # upload-artifact globs drop the path through the first `*` (see upload-artifact # README). Tarballs therefore land in the artifact as /*.tgz; download # build-tarball-output into packages/ so they resolve to packages//*.tgz. - TARBALL_ARTIFACT_GLOB: packages/*/*.tgz + TARBALL_ARTIFACT_GLOB: | + packages/*/*.tgz + packages/legacy/*/*.tgz TARBALL_ARTIFACT_DOWNLOAD_PATH: ${{ github.workspace }}/packages BUILD_LAYER_PATH: ${{ github.workspace }}/packages/aws-serverless/build/aws/dist-serverless diff --git a/.github/workflows/issue-package-label.yml b/.github/workflows/issue-package-label.yml index fb77747f336f..8ac1c7987801 100644 --- a/.github/workflows/issue-package-label.yml +++ b/.github/workflows/issue-package-label.yml @@ -122,6 +122,18 @@ jobs: "@sentry.wasm": { "label": "WASM" }, + "@sentry.esbuild-plugin": { + "label": "Feature: Source Maps" + }, + "@sentry.rollup-plugin": { + "label": "Feature: Source Maps" + }, + "@sentry.vite-plugin": { + "label": "Feature: Source Maps" + }, + "@sentry.webpack-plugin": { + "label": "Feature: Source Maps" + }, "Sentry.Browser.Loader": { "label": "Browser" }, diff --git a/CHANGELOG.md b/CHANGELOG.md index 96ff401eb033..1aaa76e8a53c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ - "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott +### Important Changes + +- **feat(bundler-plugins): Publish `@sentry/webpack-plugin`, `@sentry/vite-plugin`, `@sentry/rollup-plugin` and `@sentry/esbuild-plugin` from this repository** + + The standalone bundler plugins moved here from `getsentry/sentry-javascript-bundler-plugins` and now release in lockstep with the SDK. Their version jumps from 5.x to the SDK version. Each package re-exports the matching `@sentry/bundler-plugins` subpath, so the plugin options are unchanged. The minimum Node.js version is now the same as the SDK's. `@sentry/webpack-plugin/webpack5` still works and points to the same plugin as `@sentry/webpack-plugin`. + ## 11.4.0 - feat(sveltekit): Support stable SvelteKit 3 ([#25009](https://github.com/getsentry/sentry-javascript/pull/25009)) diff --git a/README.md b/README.md index 688bf7e72f79..b3e484ac4d6c 100644 --- a/README.md +++ b/README.md @@ -114,6 +114,13 @@ below: Provides the integration for Session Replay. - [`@sentry/core`](https://github.com/getsentry/sentry-javascript/tree/master/packages/core): The base for all JavaScript SDKs with interfaces, type definitions and base classes. +- [`@sentry/bundler-plugins`](https://github.com/getsentry/sentry-javascript/tree/master/packages/bundler-plugins): + Uploads source maps and injects release and Debug ID information at build time. Also available as standalone + plugins: + [`@sentry/webpack-plugin`](https://github.com/getsentry/sentry-javascript/tree/master/packages/legacy/webpack-plugin), + [`@sentry/vite-plugin`](https://github.com/getsentry/sentry-javascript/tree/master/packages/legacy/vite-plugin), + [`@sentry/rollup-plugin`](https://github.com/getsentry/sentry-javascript/tree/master/packages/legacy/rollup-plugin) + and [`@sentry/esbuild-plugin`](https://github.com/getsentry/sentry-javascript/tree/master/packages/legacy/esbuild-plugin). ## Bug Bounty Program diff --git a/package.json b/package.json index f755d4692b92..efceaee9a09c 100644 --- a/package.json +++ b/package.json @@ -99,6 +99,10 @@ "packages/vercel-edge", "packages/vue", "packages/wasm", + "packages/legacy/esbuild-plugin", + "packages/legacy/rollup-plugin", + "packages/legacy/vite-plugin", + "packages/legacy/webpack-plugin", "dev-packages/browser-integration-tests", "dev-packages/bundler-plugin-integration-tests", "dev-packages/e2e-tests", diff --git a/packages/bundler-plugins/README.md b/packages/bundler-plugins/README.md index e9387aab6f40..7f53436e360b 100644 --- a/packages/bundler-plugins/README.md +++ b/packages/bundler-plugins/README.md @@ -6,14 +6,14 @@ # Sentry Bundler Plugins -Core package containing the bundler-agnostic functionality used by the [bundler plugins](https://github.com/getsentry/sentry-javascript-bundler-plugins). +Sentry plugins for Webpack, Vite, Rollup and esbuild. Each plugin is a subpath export of this package, for example `@sentry/bundler-plugins/vite`. -Check out the individual packages for more information and examples: +The plugins are also published as standalone packages: -- [Rollup](https://www.npmjs.com/package/@sentry/rollup-plugin) -- [Vite](https://www.npmjs.com/package/@sentry/vite-plugin) -- [esbuild](https://www.npmjs.com/package/@sentry/esbuild-plugin) -- [Webpack](https://www.npmjs.com/package/@sentry/webpack-plugin) +- [`@sentry/rollup-plugin`](https://github.com/getsentry/sentry-javascript/tree/develop/packages/legacy/rollup-plugin) +- [`@sentry/vite-plugin`](https://github.com/getsentry/sentry-javascript/tree/develop/packages/legacy/vite-plugin) +- [`@sentry/esbuild-plugin`](https://github.com/getsentry/sentry-javascript/tree/develop/packages/legacy/esbuild-plugin) +- [`@sentry/webpack-plugin`](https://github.com/getsentry/sentry-javascript/tree/develop/packages/legacy/webpack-plugin) ## Documentation diff --git a/packages/legacy/esbuild-plugin/.gitignore b/packages/legacy/esbuild-plugin/.gitignore new file mode 100644 index 000000000000..22cfeae206b4 --- /dev/null +++ b/packages/legacy/esbuild-plugin/.gitignore @@ -0,0 +1,2 @@ +build +*.tgz diff --git a/packages/legacy/esbuild-plugin/LICENSE b/packages/legacy/esbuild-plugin/LICENSE new file mode 100644 index 000000000000..c23a90edc9be --- /dev/null +++ b/packages/legacy/esbuild-plugin/LICENSE @@ -0,0 +1,29 @@ +# MIT License + +Copyright (c) 2022-2026, Sentry +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +- Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/legacy/esbuild-plugin/README.md b/packages/legacy/esbuild-plugin/README.md new file mode 100644 index 000000000000..72ba4460548e --- /dev/null +++ b/packages/legacy/esbuild-plugin/README.md @@ -0,0 +1,45 @@ +

+ + Sentry + +

+ +# Sentry esbuild Plugin + +A esbuild plugin that uploads source maps to Sentry and injects release and Debug ID information into your bundles. + +This package re-exports `@sentry/bundler-plugins/esbuild`. + +## Installation + +```bash +npm install @sentry/esbuild-plugin --save-dev +``` + +## Usage + +```js +// build.js +import * as esbuild from 'esbuild'; +import { sentryEsbuildPlugin } from '@sentry/esbuild-plugin'; + +await esbuild.build({ + sourcemap: true, + plugins: [ + sentryEsbuildPlugin({ + org: process.env.SENTRY_ORG, + project: process.env.SENTRY_PROJECT, + authToken: process.env.SENTRY_AUTH_TOKEN, + }), + ], +}); +``` + +## Documentation + +- [Uploading source maps](https://docs.sentry.io/platforms/javascript/sourcemaps/uploading/) + +## Support + +- [Report a bug](https://github.com/getsentry/sentry-javascript/issues/new/choose) +- [Contributing](https://github.com/getsentry/sentry-javascript/blob/develop/CONTRIBUTING.md) diff --git a/packages/legacy/esbuild-plugin/package.json b/packages/legacy/esbuild-plugin/package.json new file mode 100644 index 000000000000..d7c6b315705d --- /dev/null +++ b/packages/legacy/esbuild-plugin/package.json @@ -0,0 +1,56 @@ +{ + "name": "@sentry/esbuild-plugin", + "version": "11.4.0", + "description": "Official Sentry esbuild plugin", + "repository": "git://github.com/getsentry/sentry-javascript.git", + "homepage": "https://github.com/getsentry/sentry-javascript/tree/develop/packages/legacy/esbuild-plugin", + "author": "Sentry", + "license": "MIT", + "keywords": [ + "Sentry", + "esbuild", + "bundler", + "plugin" + ], + "engines": { + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" + }, + "publishConfig": { + "access": "public" + }, + "files": [ + "/build" + ], + "main": "build/cjs/index.js", + "module": "build/esm/index.js", + "types": "build/types/index.d.ts", + "exports": { + "./package.json": "./package.json", + ".": { + "types": "./build/types/index.d.ts", + "import": "./build/esm/index.js", + "require": "./build/cjs/index.js" + } + }, + "scripts": { + "build": "run-p build:transpile build:types", + "build:dev": "yarn build", + "build:transpile": "rollup -c rollup.npm.config.mjs", + "build:types": "tsc -p tsconfig.types.json", + "build:watch": "run-p build:transpile:watch", + "build:dev:watch": "yarn build:watch", + "build:transpile:watch": "rollup -c rollup.npm.config.mjs --watch", + "build:tarball": "npm pack", + "clean": "rimraf build coverage sentry-esbuild-plugin-*.tgz", + "lint": "oxlint . --type-aware", + "lint:fix": "oxlint . --fix --type-aware", + "test": "vitest run", + "test:unit": "vitest run" + }, + "dependencies": { + "@sentry/bundler-plugins": "11.4.0" + }, + "volta": { + "extends": "../../../package.json" + } +} diff --git a/packages/legacy/esbuild-plugin/rollup.npm.config.mjs b/packages/legacy/esbuild-plugin/rollup.npm.config.mjs new file mode 100644 index 000000000000..b11c2c4f9148 --- /dev/null +++ b/packages/legacy/esbuild-plugin/rollup.npm.config.mjs @@ -0,0 +1,12 @@ +import { makeBaseNPMConfig, makeNPMConfigVariants } from '@sentry-internal/rollup-utils'; + +export default makeNPMConfigVariants( + makeBaseNPMConfig({ + entrypoints: ['src/index.ts'], + packageSpecificConfig: { + output: { + exports: 'named', + }, + }, + }), +); diff --git a/packages/legacy/esbuild-plugin/src/index.ts b/packages/legacy/esbuild-plugin/src/index.ts new file mode 100644 index 000000000000..142a16901164 --- /dev/null +++ b/packages/legacy/esbuild-plugin/src/index.ts @@ -0,0 +1,2 @@ +export * from '@sentry/bundler-plugins/esbuild'; +export { default } from '@sentry/bundler-plugins/esbuild'; diff --git a/packages/legacy/esbuild-plugin/test/index.test.ts b/packages/legacy/esbuild-plugin/test/index.test.ts new file mode 100644 index 000000000000..d92084cfd902 --- /dev/null +++ b/packages/legacy/esbuild-plugin/test/index.test.ts @@ -0,0 +1,14 @@ +import * as bundlerPlugins from '@sentry/bundler-plugins/esbuild'; +import { describe, expect, it } from 'vitest'; +import * as plugin from '../src/index'; + +describe('@sentry/esbuild-plugin', () => { + it('re-exports @sentry/bundler-plugins/esbuild', () => { + expect(plugin.sentryEsbuildPlugin).toBe(bundlerPlugins.sentryEsbuildPlugin); + expect(Object.keys(plugin).sort()).toEqual(Object.keys(bundlerPlugins).sort()); + }); + + it('re-exports the default export', () => { + expect(plugin.default).toBe(bundlerPlugins.default); + }); +}); diff --git a/packages/legacy/esbuild-plugin/test/tsconfig.json b/packages/legacy/esbuild-plugin/test/tsconfig.json new file mode 100644 index 000000000000..76d0c9cff6f2 --- /dev/null +++ b/packages/legacy/esbuild-plugin/test/tsconfig.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../tsconfig.json", + "include": ["../src/**/*", "./**/*"], + "compilerOptions": { + "types": ["node"] + } +} diff --git a/packages/legacy/esbuild-plugin/tsconfig.json b/packages/legacy/esbuild-plugin/tsconfig.json new file mode 100644 index 000000000000..79bdd1df1220 --- /dev/null +++ b/packages/legacy/esbuild-plugin/tsconfig.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../../../tsconfig.json", + "include": ["./src/**/*.ts", "./package.json"] +} diff --git a/packages/legacy/esbuild-plugin/tsconfig.types.json b/packages/legacy/esbuild-plugin/tsconfig.types.json new file mode 100644 index 000000000000..9321489cd9a9 --- /dev/null +++ b/packages/legacy/esbuild-plugin/tsconfig.types.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./tsconfig.json", + "include": ["./src/**/*"], + "compilerOptions": { + "rootDir": "./src", + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "build/types" + } +} diff --git a/packages/legacy/esbuild-plugin/vite.config.ts b/packages/legacy/esbuild-plugin/vite.config.ts new file mode 100644 index 000000000000..d18e1bd6826f --- /dev/null +++ b/packages/legacy/esbuild-plugin/vite.config.ts @@ -0,0 +1,8 @@ +import baseConfig from '../../../vite/vite.config'; + +export default { + ...baseConfig, + test: { + ...baseConfig.test, + }, +}; diff --git a/packages/legacy/rollup-plugin/.gitignore b/packages/legacy/rollup-plugin/.gitignore new file mode 100644 index 000000000000..22cfeae206b4 --- /dev/null +++ b/packages/legacy/rollup-plugin/.gitignore @@ -0,0 +1,2 @@ +build +*.tgz diff --git a/packages/legacy/rollup-plugin/LICENSE b/packages/legacy/rollup-plugin/LICENSE new file mode 100644 index 000000000000..c23a90edc9be --- /dev/null +++ b/packages/legacy/rollup-plugin/LICENSE @@ -0,0 +1,29 @@ +# MIT License + +Copyright (c) 2022-2026, Sentry +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +- Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/legacy/rollup-plugin/README.md b/packages/legacy/rollup-plugin/README.md new file mode 100644 index 000000000000..17a8d1c7b2c2 --- /dev/null +++ b/packages/legacy/rollup-plugin/README.md @@ -0,0 +1,46 @@ +

+ + Sentry + +

+ +# Sentry Rollup Plugin + +A Rollup plugin that uploads source maps to Sentry and injects release and Debug ID information into your bundles. + +This package re-exports `@sentry/bundler-plugins/rollup`. + +## Installation + +```bash +npm install @sentry/rollup-plugin --save-dev +``` + +## Usage + +```js +// rollup.config.js +import { sentryRollupPlugin } from '@sentry/rollup-plugin'; + +export default { + output: { + sourcemap: true, + }, + plugins: [ + sentryRollupPlugin({ + org: process.env.SENTRY_ORG, + project: process.env.SENTRY_PROJECT, + authToken: process.env.SENTRY_AUTH_TOKEN, + }), + ], +}; +``` + +## Documentation + +- [Uploading source maps](https://docs.sentry.io/platforms/javascript/sourcemaps/uploading/) + +## Support + +- [Report a bug](https://github.com/getsentry/sentry-javascript/issues/new/choose) +- [Contributing](https://github.com/getsentry/sentry-javascript/blob/develop/CONTRIBUTING.md) diff --git a/packages/legacy/rollup-plugin/package.json b/packages/legacy/rollup-plugin/package.json new file mode 100644 index 000000000000..9df54674c2fb --- /dev/null +++ b/packages/legacy/rollup-plugin/package.json @@ -0,0 +1,65 @@ +{ + "name": "@sentry/rollup-plugin", + "version": "11.4.0", + "description": "Official Sentry Rollup plugin", + "repository": "git://github.com/getsentry/sentry-javascript.git", + "homepage": "https://github.com/getsentry/sentry-javascript/tree/develop/packages/legacy/rollup-plugin", + "author": "Sentry", + "license": "MIT", + "keywords": [ + "Sentry", + "rollup-plugin", + "Rollup", + "bundler", + "plugin" + ], + "engines": { + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" + }, + "publishConfig": { + "access": "public" + }, + "files": [ + "/build" + ], + "main": "build/cjs/index.js", + "module": "build/esm/index.js", + "types": "build/types/index.d.ts", + "exports": { + "./package.json": "./package.json", + ".": { + "types": "./build/types/index.d.ts", + "import": "./build/esm/index.js", + "require": "./build/cjs/index.js" + } + }, + "scripts": { + "build": "run-p build:transpile build:types", + "build:dev": "yarn build", + "build:transpile": "rollup -c rollup.npm.config.mjs", + "build:types": "tsc -p tsconfig.types.json", + "build:watch": "run-p build:transpile:watch", + "build:dev:watch": "yarn build:watch", + "build:transpile:watch": "rollup -c rollup.npm.config.mjs --watch", + "build:tarball": "npm pack", + "clean": "rimraf build coverage sentry-rollup-plugin-*.tgz", + "lint": "oxlint . --type-aware", + "lint:fix": "oxlint . --fix --type-aware", + "test": "vitest run", + "test:unit": "vitest run" + }, + "dependencies": { + "@sentry/bundler-plugins": "11.4.0" + }, + "peerDependencies": { + "rollup": ">=3.2.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + }, + "volta": { + "extends": "../../../package.json" + } +} diff --git a/packages/legacy/rollup-plugin/rollup.npm.config.mjs b/packages/legacy/rollup-plugin/rollup.npm.config.mjs new file mode 100644 index 000000000000..601cc6837ce0 --- /dev/null +++ b/packages/legacy/rollup-plugin/rollup.npm.config.mjs @@ -0,0 +1,7 @@ +import { makeBaseNPMConfig, makeNPMConfigVariants } from '@sentry-internal/rollup-utils'; + +export default makeNPMConfigVariants( + makeBaseNPMConfig({ + entrypoints: ['src/index.ts'], + }), +); diff --git a/packages/legacy/rollup-plugin/src/index.ts b/packages/legacy/rollup-plugin/src/index.ts new file mode 100644 index 000000000000..0807365d7f98 --- /dev/null +++ b/packages/legacy/rollup-plugin/src/index.ts @@ -0,0 +1 @@ +export * from '@sentry/bundler-plugins/rollup'; diff --git a/packages/legacy/rollup-plugin/test/index.test.ts b/packages/legacy/rollup-plugin/test/index.test.ts new file mode 100644 index 000000000000..759af8b27bb6 --- /dev/null +++ b/packages/legacy/rollup-plugin/test/index.test.ts @@ -0,0 +1,10 @@ +import * as bundlerPlugins from '@sentry/bundler-plugins/rollup'; +import { describe, expect, it } from 'vitest'; +import * as plugin from '../src/index'; + +describe('@sentry/rollup-plugin', () => { + it('re-exports @sentry/bundler-plugins/rollup', () => { + expect(plugin.sentryRollupPlugin).toBe(bundlerPlugins.sentryRollupPlugin); + expect(Object.keys(plugin).sort()).toEqual(Object.keys(bundlerPlugins).sort()); + }); +}); diff --git a/packages/legacy/rollup-plugin/test/tsconfig.json b/packages/legacy/rollup-plugin/test/tsconfig.json new file mode 100644 index 000000000000..76d0c9cff6f2 --- /dev/null +++ b/packages/legacy/rollup-plugin/test/tsconfig.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../tsconfig.json", + "include": ["../src/**/*", "./**/*"], + "compilerOptions": { + "types": ["node"] + } +} diff --git a/packages/legacy/rollup-plugin/tsconfig.json b/packages/legacy/rollup-plugin/tsconfig.json new file mode 100644 index 000000000000..79bdd1df1220 --- /dev/null +++ b/packages/legacy/rollup-plugin/tsconfig.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../../../tsconfig.json", + "include": ["./src/**/*.ts", "./package.json"] +} diff --git a/packages/legacy/rollup-plugin/tsconfig.types.json b/packages/legacy/rollup-plugin/tsconfig.types.json new file mode 100644 index 000000000000..9321489cd9a9 --- /dev/null +++ b/packages/legacy/rollup-plugin/tsconfig.types.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./tsconfig.json", + "include": ["./src/**/*"], + "compilerOptions": { + "rootDir": "./src", + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "build/types" + } +} diff --git a/packages/legacy/rollup-plugin/vite.config.ts b/packages/legacy/rollup-plugin/vite.config.ts new file mode 100644 index 000000000000..d18e1bd6826f --- /dev/null +++ b/packages/legacy/rollup-plugin/vite.config.ts @@ -0,0 +1,8 @@ +import baseConfig from '../../../vite/vite.config'; + +export default { + ...baseConfig, + test: { + ...baseConfig.test, + }, +}; diff --git a/packages/legacy/vite-plugin/.gitignore b/packages/legacy/vite-plugin/.gitignore new file mode 100644 index 000000000000..22cfeae206b4 --- /dev/null +++ b/packages/legacy/vite-plugin/.gitignore @@ -0,0 +1,2 @@ +build +*.tgz diff --git a/packages/legacy/vite-plugin/LICENSE b/packages/legacy/vite-plugin/LICENSE new file mode 100644 index 000000000000..c23a90edc9be --- /dev/null +++ b/packages/legacy/vite-plugin/LICENSE @@ -0,0 +1,29 @@ +# MIT License + +Copyright (c) 2022-2026, Sentry +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +- Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/legacy/vite-plugin/README.md b/packages/legacy/vite-plugin/README.md new file mode 100644 index 000000000000..95264132eb3b --- /dev/null +++ b/packages/legacy/vite-plugin/README.md @@ -0,0 +1,47 @@ +

+ + Sentry + +

+ +# Sentry Vite Plugin + +A Vite plugin that uploads source maps to Sentry and injects release and Debug ID information into your bundles. + +This package re-exports `@sentry/bundler-plugins/vite`. + +## Installation + +```bash +npm install @sentry/vite-plugin --save-dev +``` + +## Usage + +```js +// vite.config.js +import { defineConfig } from 'vite'; +import { sentryVitePlugin } from '@sentry/vite-plugin'; + +export default defineConfig({ + build: { + sourcemap: true, + }, + plugins: [ + sentryVitePlugin({ + org: process.env.SENTRY_ORG, + project: process.env.SENTRY_PROJECT, + authToken: process.env.SENTRY_AUTH_TOKEN, + }), + ], +}); +``` + +## Documentation + +- [Uploading source maps](https://docs.sentry.io/platforms/javascript/sourcemaps/uploading/) + +## Support + +- [Report a bug](https://github.com/getsentry/sentry-javascript/issues/new/choose) +- [Contributing](https://github.com/getsentry/sentry-javascript/blob/develop/CONTRIBUTING.md) diff --git a/packages/legacy/vite-plugin/package.json b/packages/legacy/vite-plugin/package.json new file mode 100644 index 000000000000..4f8551417edd --- /dev/null +++ b/packages/legacy/vite-plugin/package.json @@ -0,0 +1,56 @@ +{ + "name": "@sentry/vite-plugin", + "version": "11.4.0", + "description": "Official Sentry Vite plugin", + "repository": "git://github.com/getsentry/sentry-javascript.git", + "homepage": "https://github.com/getsentry/sentry-javascript/tree/develop/packages/legacy/vite-plugin", + "author": "Sentry", + "license": "MIT", + "keywords": [ + "Sentry", + "Vite", + "bundler", + "plugin" + ], + "engines": { + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" + }, + "publishConfig": { + "access": "public" + }, + "files": [ + "/build" + ], + "main": "build/cjs/index.js", + "module": "build/esm/index.js", + "types": "build/types/index.d.ts", + "exports": { + "./package.json": "./package.json", + ".": { + "types": "./build/types/index.d.ts", + "import": "./build/esm/index.js", + "require": "./build/cjs/index.js" + } + }, + "scripts": { + "build": "run-p build:transpile build:types", + "build:dev": "yarn build", + "build:transpile": "rollup -c rollup.npm.config.mjs", + "build:types": "tsc -p tsconfig.types.json", + "build:watch": "run-p build:transpile:watch", + "build:dev:watch": "yarn build:watch", + "build:transpile:watch": "rollup -c rollup.npm.config.mjs --watch", + "build:tarball": "npm pack", + "clean": "rimraf build coverage sentry-vite-plugin-*.tgz", + "lint": "oxlint . --type-aware", + "lint:fix": "oxlint . --fix --type-aware", + "test": "vitest run", + "test:unit": "vitest run" + }, + "dependencies": { + "@sentry/bundler-plugins": "11.4.0" + }, + "volta": { + "extends": "../../../package.json" + } +} diff --git a/packages/legacy/vite-plugin/rollup.npm.config.mjs b/packages/legacy/vite-plugin/rollup.npm.config.mjs new file mode 100644 index 000000000000..601cc6837ce0 --- /dev/null +++ b/packages/legacy/vite-plugin/rollup.npm.config.mjs @@ -0,0 +1,7 @@ +import { makeBaseNPMConfig, makeNPMConfigVariants } from '@sentry-internal/rollup-utils'; + +export default makeNPMConfigVariants( + makeBaseNPMConfig({ + entrypoints: ['src/index.ts'], + }), +); diff --git a/packages/legacy/vite-plugin/src/index.ts b/packages/legacy/vite-plugin/src/index.ts new file mode 100644 index 000000000000..cc8533273401 --- /dev/null +++ b/packages/legacy/vite-plugin/src/index.ts @@ -0,0 +1 @@ +export * from '@sentry/bundler-plugins/vite'; diff --git a/packages/legacy/vite-plugin/test/index.test.ts b/packages/legacy/vite-plugin/test/index.test.ts new file mode 100644 index 000000000000..5cb1c33948c4 --- /dev/null +++ b/packages/legacy/vite-plugin/test/index.test.ts @@ -0,0 +1,10 @@ +import * as bundlerPlugins from '@sentry/bundler-plugins/vite'; +import { describe, expect, it } from 'vitest'; +import * as plugin from '../src/index'; + +describe('@sentry/vite-plugin', () => { + it('re-exports @sentry/bundler-plugins/vite', () => { + expect(plugin.sentryVitePlugin).toBe(bundlerPlugins.sentryVitePlugin); + expect(Object.keys(plugin).sort()).toEqual(Object.keys(bundlerPlugins).sort()); + }); +}); diff --git a/packages/legacy/vite-plugin/test/tsconfig.json b/packages/legacy/vite-plugin/test/tsconfig.json new file mode 100644 index 000000000000..76d0c9cff6f2 --- /dev/null +++ b/packages/legacy/vite-plugin/test/tsconfig.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../tsconfig.json", + "include": ["../src/**/*", "./**/*"], + "compilerOptions": { + "types": ["node"] + } +} diff --git a/packages/legacy/vite-plugin/tsconfig.json b/packages/legacy/vite-plugin/tsconfig.json new file mode 100644 index 000000000000..79bdd1df1220 --- /dev/null +++ b/packages/legacy/vite-plugin/tsconfig.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../../../tsconfig.json", + "include": ["./src/**/*.ts", "./package.json"] +} diff --git a/packages/legacy/vite-plugin/tsconfig.types.json b/packages/legacy/vite-plugin/tsconfig.types.json new file mode 100644 index 000000000000..9321489cd9a9 --- /dev/null +++ b/packages/legacy/vite-plugin/tsconfig.types.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./tsconfig.json", + "include": ["./src/**/*"], + "compilerOptions": { + "rootDir": "./src", + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "build/types" + } +} diff --git a/packages/legacy/vite-plugin/vite.config.ts b/packages/legacy/vite-plugin/vite.config.ts new file mode 100644 index 000000000000..d18e1bd6826f --- /dev/null +++ b/packages/legacy/vite-plugin/vite.config.ts @@ -0,0 +1,8 @@ +import baseConfig from '../../../vite/vite.config'; + +export default { + ...baseConfig, + test: { + ...baseConfig.test, + }, +}; diff --git a/packages/legacy/webpack-plugin/.gitignore b/packages/legacy/webpack-plugin/.gitignore new file mode 100644 index 000000000000..22cfeae206b4 --- /dev/null +++ b/packages/legacy/webpack-plugin/.gitignore @@ -0,0 +1,2 @@ +build +*.tgz diff --git a/packages/legacy/webpack-plugin/LICENSE b/packages/legacy/webpack-plugin/LICENSE new file mode 100644 index 000000000000..c23a90edc9be --- /dev/null +++ b/packages/legacy/webpack-plugin/LICENSE @@ -0,0 +1,29 @@ +# MIT License + +Copyright (c) 2022-2026, Sentry +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +- Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/legacy/webpack-plugin/README.md b/packages/legacy/webpack-plugin/README.md new file mode 100644 index 000000000000..035bc61567ae --- /dev/null +++ b/packages/legacy/webpack-plugin/README.md @@ -0,0 +1,44 @@ +

+ + Sentry + +

+ +# Sentry Webpack Plugin + +A Webpack plugin that uploads source maps to Sentry and injects release and Debug ID information into your bundles. + +This package re-exports `@sentry/bundler-plugins/webpack`. + +## Installation + +```bash +npm install @sentry/webpack-plugin --save-dev +``` + +## Usage + +```js +// webpack.config.js +const { sentryWebpackPlugin } = require('@sentry/webpack-plugin'); + +module.exports = { + devtool: 'source-map', + plugins: [ + sentryWebpackPlugin({ + org: process.env.SENTRY_ORG, + project: process.env.SENTRY_PROJECT, + authToken: process.env.SENTRY_AUTH_TOKEN, + }), + ], +}; +``` + +## Documentation + +- [Uploading source maps](https://docs.sentry.io/platforms/javascript/sourcemaps/uploading/) + +## Support + +- [Report a bug](https://github.com/getsentry/sentry-javascript/issues/new/choose) +- [Contributing](https://github.com/getsentry/sentry-javascript/blob/develop/CONTRIBUTING.md) diff --git a/packages/legacy/webpack-plugin/package.json b/packages/legacy/webpack-plugin/package.json new file mode 100644 index 000000000000..cb111a62c07c --- /dev/null +++ b/packages/legacy/webpack-plugin/package.json @@ -0,0 +1,64 @@ +{ + "name": "@sentry/webpack-plugin", + "version": "11.4.0", + "description": "Official Sentry Webpack plugin", + "repository": "git://github.com/getsentry/sentry-javascript.git", + "homepage": "https://github.com/getsentry/sentry-javascript/tree/develop/packages/legacy/webpack-plugin", + "author": "Sentry", + "license": "MIT", + "keywords": [ + "Sentry", + "Webpack", + "bundler", + "plugin" + ], + "engines": { + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" + }, + "publishConfig": { + "access": "public" + }, + "files": [ + "/build" + ], + "main": "build/cjs/index.js", + "module": "build/esm/index.js", + "types": "build/types/index.d.ts", + "exports": { + "./package.json": "./package.json", + ".": { + "types": "./build/types/index.d.ts", + "import": "./build/esm/index.js", + "require": "./build/cjs/index.js" + }, + "./webpack5": { + "types": "./build/types/webpack5.d.ts", + "import": "./build/esm/webpack5.js", + "require": "./build/cjs/webpack5.js" + } + }, + "scripts": { + "build": "run-p build:transpile build:types", + "build:dev": "yarn build", + "build:transpile": "rollup -c rollup.npm.config.mjs", + "build:types": "tsc -p tsconfig.types.json", + "build:watch": "run-p build:transpile:watch", + "build:dev:watch": "yarn build:watch", + "build:transpile:watch": "rollup -c rollup.npm.config.mjs --watch", + "build:tarball": "npm pack", + "clean": "rimraf build coverage sentry-webpack-plugin-*.tgz", + "lint": "oxlint . --type-aware", + "lint:fix": "oxlint . --fix --type-aware", + "test": "vitest run", + "test:unit": "vitest run" + }, + "dependencies": { + "@sentry/bundler-plugins": "11.4.0" + }, + "peerDependencies": { + "webpack": ">=5.1.0" + }, + "volta": { + "extends": "../../../package.json" + } +} diff --git a/packages/legacy/webpack-plugin/rollup.npm.config.mjs b/packages/legacy/webpack-plugin/rollup.npm.config.mjs new file mode 100644 index 000000000000..b4522dc9186d --- /dev/null +++ b/packages/legacy/webpack-plugin/rollup.npm.config.mjs @@ -0,0 +1,7 @@ +import { makeBaseNPMConfig, makeNPMConfigVariants } from '@sentry-internal/rollup-utils'; + +export default makeNPMConfigVariants( + makeBaseNPMConfig({ + entrypoints: ['src/index.ts', 'src/webpack5.ts'], + }), +); diff --git a/packages/legacy/webpack-plugin/src/index.ts b/packages/legacy/webpack-plugin/src/index.ts new file mode 100644 index 000000000000..054e9f40a1f3 --- /dev/null +++ b/packages/legacy/webpack-plugin/src/index.ts @@ -0,0 +1 @@ +export * from '@sentry/bundler-plugins/webpack'; diff --git a/packages/legacy/webpack-plugin/src/webpack5.ts b/packages/legacy/webpack-plugin/src/webpack5.ts new file mode 100644 index 000000000000..054e9f40a1f3 --- /dev/null +++ b/packages/legacy/webpack-plugin/src/webpack5.ts @@ -0,0 +1 @@ +export * from '@sentry/bundler-plugins/webpack'; diff --git a/packages/legacy/webpack-plugin/test/index.test.ts b/packages/legacy/webpack-plugin/test/index.test.ts new file mode 100644 index 000000000000..6a542d367dab --- /dev/null +++ b/packages/legacy/webpack-plugin/test/index.test.ts @@ -0,0 +1,15 @@ +import * as bundlerPlugins from '@sentry/bundler-plugins/webpack'; +import { describe, expect, it } from 'vitest'; +import * as plugin from '../src/index'; + +describe('@sentry/webpack-plugin', () => { + it('re-exports @sentry/bundler-plugins/webpack', () => { + expect(plugin.sentryWebpackPlugin).toBe(bundlerPlugins.sentryWebpackPlugin); + expect(Object.keys(plugin).sort()).toEqual(Object.keys(bundlerPlugins).sort()); + }); + + it('re-exports the plugin from ./webpack5', async () => { + const webpack5 = await import('../src/webpack5'); + expect(webpack5.sentryWebpackPlugin).toBe(bundlerPlugins.sentryWebpackPlugin); + }); +}); diff --git a/packages/legacy/webpack-plugin/test/tsconfig.json b/packages/legacy/webpack-plugin/test/tsconfig.json new file mode 100644 index 000000000000..76d0c9cff6f2 --- /dev/null +++ b/packages/legacy/webpack-plugin/test/tsconfig.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../tsconfig.json", + "include": ["../src/**/*", "./**/*"], + "compilerOptions": { + "types": ["node"] + } +} diff --git a/packages/legacy/webpack-plugin/tsconfig.json b/packages/legacy/webpack-plugin/tsconfig.json new file mode 100644 index 000000000000..79bdd1df1220 --- /dev/null +++ b/packages/legacy/webpack-plugin/tsconfig.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../../../tsconfig.json", + "include": ["./src/**/*.ts", "./package.json"] +} diff --git a/packages/legacy/webpack-plugin/tsconfig.types.json b/packages/legacy/webpack-plugin/tsconfig.types.json new file mode 100644 index 000000000000..9321489cd9a9 --- /dev/null +++ b/packages/legacy/webpack-plugin/tsconfig.types.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./tsconfig.json", + "include": ["./src/**/*"], + "compilerOptions": { + "rootDir": "./src", + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "build/types" + } +} diff --git a/packages/legacy/webpack-plugin/vite.config.ts b/packages/legacy/webpack-plugin/vite.config.ts new file mode 100644 index 000000000000..d18e1bd6826f --- /dev/null +++ b/packages/legacy/webpack-plugin/vite.config.ts @@ -0,0 +1,8 @@ +import baseConfig from '../../../vite/vite.config'; + +export default { + ...baseConfig, + test: { + ...baseConfig.test, + }, +}; From 3058255a4d8b32e6ddccfae447baa3cf6563f5c3 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Tue, 6 Oct 2026 11:49:33 +0100 Subject: [PATCH 2/7] Revert changelog and README changes --- CHANGELOG.md | 6 ------ README.md | 7 ------- packages/bundler-plugins/README.md | 12 ++++++------ 3 files changed, 6 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1aaa76e8a53c..96ff401eb033 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,12 +4,6 @@ - "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott -### Important Changes - -- **feat(bundler-plugins): Publish `@sentry/webpack-plugin`, `@sentry/vite-plugin`, `@sentry/rollup-plugin` and `@sentry/esbuild-plugin` from this repository** - - The standalone bundler plugins moved here from `getsentry/sentry-javascript-bundler-plugins` and now release in lockstep with the SDK. Their version jumps from 5.x to the SDK version. Each package re-exports the matching `@sentry/bundler-plugins` subpath, so the plugin options are unchanged. The minimum Node.js version is now the same as the SDK's. `@sentry/webpack-plugin/webpack5` still works and points to the same plugin as `@sentry/webpack-plugin`. - ## 11.4.0 - feat(sveltekit): Support stable SvelteKit 3 ([#25009](https://github.com/getsentry/sentry-javascript/pull/25009)) diff --git a/README.md b/README.md index b3e484ac4d6c..688bf7e72f79 100644 --- a/README.md +++ b/README.md @@ -114,13 +114,6 @@ below: Provides the integration for Session Replay. - [`@sentry/core`](https://github.com/getsentry/sentry-javascript/tree/master/packages/core): The base for all JavaScript SDKs with interfaces, type definitions and base classes. -- [`@sentry/bundler-plugins`](https://github.com/getsentry/sentry-javascript/tree/master/packages/bundler-plugins): - Uploads source maps and injects release and Debug ID information at build time. Also available as standalone - plugins: - [`@sentry/webpack-plugin`](https://github.com/getsentry/sentry-javascript/tree/master/packages/legacy/webpack-plugin), - [`@sentry/vite-plugin`](https://github.com/getsentry/sentry-javascript/tree/master/packages/legacy/vite-plugin), - [`@sentry/rollup-plugin`](https://github.com/getsentry/sentry-javascript/tree/master/packages/legacy/rollup-plugin) - and [`@sentry/esbuild-plugin`](https://github.com/getsentry/sentry-javascript/tree/master/packages/legacy/esbuild-plugin). ## Bug Bounty Program diff --git a/packages/bundler-plugins/README.md b/packages/bundler-plugins/README.md index 7f53436e360b..e9387aab6f40 100644 --- a/packages/bundler-plugins/README.md +++ b/packages/bundler-plugins/README.md @@ -6,14 +6,14 @@ # Sentry Bundler Plugins -Sentry plugins for Webpack, Vite, Rollup and esbuild. Each plugin is a subpath export of this package, for example `@sentry/bundler-plugins/vite`. +Core package containing the bundler-agnostic functionality used by the [bundler plugins](https://github.com/getsentry/sentry-javascript-bundler-plugins). -The plugins are also published as standalone packages: +Check out the individual packages for more information and examples: -- [`@sentry/rollup-plugin`](https://github.com/getsentry/sentry-javascript/tree/develop/packages/legacy/rollup-plugin) -- [`@sentry/vite-plugin`](https://github.com/getsentry/sentry-javascript/tree/develop/packages/legacy/vite-plugin) -- [`@sentry/esbuild-plugin`](https://github.com/getsentry/sentry-javascript/tree/develop/packages/legacy/esbuild-plugin) -- [`@sentry/webpack-plugin`](https://github.com/getsentry/sentry-javascript/tree/develop/packages/legacy/webpack-plugin) +- [Rollup](https://www.npmjs.com/package/@sentry/rollup-plugin) +- [Vite](https://www.npmjs.com/package/@sentry/vite-plugin) +- [esbuild](https://www.npmjs.com/package/@sentry/esbuild-plugin) +- [Webpack](https://www.npmjs.com/package/@sentry/webpack-plugin) ## Documentation From 9ec908e03d04cb3a9c3098038295a652d0dc2104 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Tue, 6 Oct 2026 13:27:40 +0100 Subject: [PATCH 3/7] chore: Clean legacy package tarballs --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index efceaee9a09c..7fd80a27395f 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "clean:build": "nx run-many -t clean", "clean:caches": "yarn rimraf eslintcache .nxcache .nx", "clean:deps": "rimraf packages/*/node_modules dev-packages/*/node_modules && rm -rf node_modules && yarn", - "clean:tarballs": "rimraf {packages,dev-packages}/*/*.tgz", + "clean:tarballs": "rimraf {packages,dev-packages}/*/*.tgz packages/legacy/*/*.tgz", "clean:watchman": "watchman watch-del \".\"", "clean:all": "run-s clean:build clean:tarballs clean:caches clean:deps clean:watchman", "format": "oxfmt . --write", From 882fab8e1a12218eeb5442e3c2437a0c20b72fde Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Wed, 7 Oct 2026 13:42:07 +0100 Subject: [PATCH 4/7] chore: Bump legacy bundler plugin packages to 11.5.0 --- packages/legacy/esbuild-plugin/package.json | 4 ++-- packages/legacy/rollup-plugin/package.json | 4 ++-- packages/legacy/vite-plugin/package.json | 4 ++-- packages/legacy/webpack-plugin/package.json | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/legacy/esbuild-plugin/package.json b/packages/legacy/esbuild-plugin/package.json index d7c6b315705d..baee14d02df4 100644 --- a/packages/legacy/esbuild-plugin/package.json +++ b/packages/legacy/esbuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/esbuild-plugin", - "version": "11.4.0", + "version": "11.5.0", "description": "Official Sentry esbuild plugin", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/develop/packages/legacy/esbuild-plugin", @@ -48,7 +48,7 @@ "test:unit": "vitest run" }, "dependencies": { - "@sentry/bundler-plugins": "11.4.0" + "@sentry/bundler-plugins": "11.5.0" }, "volta": { "extends": "../../../package.json" diff --git a/packages/legacy/rollup-plugin/package.json b/packages/legacy/rollup-plugin/package.json index 9df54674c2fb..7a2b88e18c06 100644 --- a/packages/legacy/rollup-plugin/package.json +++ b/packages/legacy/rollup-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/rollup-plugin", - "version": "11.4.0", + "version": "11.5.0", "description": "Official Sentry Rollup plugin", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/develop/packages/legacy/rollup-plugin", @@ -49,7 +49,7 @@ "test:unit": "vitest run" }, "dependencies": { - "@sentry/bundler-plugins": "11.4.0" + "@sentry/bundler-plugins": "11.5.0" }, "peerDependencies": { "rollup": ">=3.2.0" diff --git a/packages/legacy/vite-plugin/package.json b/packages/legacy/vite-plugin/package.json index 4f8551417edd..bbf2fdf4b1cf 100644 --- a/packages/legacy/vite-plugin/package.json +++ b/packages/legacy/vite-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vite-plugin", - "version": "11.4.0", + "version": "11.5.0", "description": "Official Sentry Vite plugin", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/develop/packages/legacy/vite-plugin", @@ -48,7 +48,7 @@ "test:unit": "vitest run" }, "dependencies": { - "@sentry/bundler-plugins": "11.4.0" + "@sentry/bundler-plugins": "11.5.0" }, "volta": { "extends": "../../../package.json" diff --git a/packages/legacy/webpack-plugin/package.json b/packages/legacy/webpack-plugin/package.json index cb111a62c07c..ec31f412a222 100644 --- a/packages/legacy/webpack-plugin/package.json +++ b/packages/legacy/webpack-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/webpack-plugin", - "version": "11.4.0", + "version": "11.5.0", "description": "Official Sentry Webpack plugin", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/develop/packages/legacy/webpack-plugin", @@ -53,7 +53,7 @@ "test:unit": "vitest run" }, "dependencies": { - "@sentry/bundler-plugins": "11.4.0" + "@sentry/bundler-plugins": "11.5.0" }, "peerDependencies": { "webpack": ">=5.1.0" From b2f3bc1b8292907dcf96a206f73754c1cf822b04 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Wed, 7 Oct 2026 13:59:51 +0100 Subject: [PATCH 5/7] test(e2e): Use packed legacy bundler plugin tarballs --- dev-packages/e2e-tests/lib/packedTarballUtils.ts | 4 +++- dev-packages/e2e-tests/lib/syncPackedTarballSymlinks.ts | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/dev-packages/e2e-tests/lib/packedTarballUtils.ts b/dev-packages/e2e-tests/lib/packedTarballUtils.ts index 7469eb12f4a2..e5ddfdb7ee25 100644 --- a/dev-packages/e2e-tests/lib/packedTarballUtils.ts +++ b/dev-packages/e2e-tests/lib/packedTarballUtils.ts @@ -5,6 +5,8 @@ import { sync as globSync } from 'glob'; const E2E_TESTS_ROOT = path.resolve(__dirname, '..'); const REPOSITORY_ROOT = path.resolve(E2E_TESTS_ROOT, '../..'); +export const PACKAGE_JSON_GLOB = '{packages/*,packages/legacy/*}/package.json'; + /** * Workspace @sentry and @sentry-internal packages that have a built tarball for the E2E version. * @returns The names of the published Sentry tarball packages. @@ -13,7 +15,7 @@ export function getPublishedSentryTarballPackageNames(): string[] { const version = getE2eTestsPackageVersion(); const names: string[] = []; - for (const packageJsonPath of globSync('packages/*/package.json', { + for (const packageJsonPath of globSync(PACKAGE_JSON_GLOB, { cwd: REPOSITORY_ROOT, absolute: true, })) { diff --git a/dev-packages/e2e-tests/lib/syncPackedTarballSymlinks.ts b/dev-packages/e2e-tests/lib/syncPackedTarballSymlinks.ts index ac6110ed7afd..effc367b68ba 100644 --- a/dev-packages/e2e-tests/lib/syncPackedTarballSymlinks.ts +++ b/dev-packages/e2e-tests/lib/syncPackedTarballSymlinks.ts @@ -2,7 +2,7 @@ import * as fs from 'fs'; import * as path from 'path'; import { sync as globSync } from 'glob'; -import { packedSymlinkFilename, versionedTarballFilename } from './packedTarballUtils'; +import { PACKAGE_JSON_GLOB, packedSymlinkFilename, versionedTarballFilename } from './packedTarballUtils'; const e2eTestsRoot = path.resolve(__dirname, '..'); const repositoryRoot = path.resolve(e2eTestsRoot, '../..'); @@ -28,7 +28,7 @@ export function syncPackedTarballSymlinks(): void { fs.rmSync(path.join(packedDir, entry.name), { recursive: true, force: true }); } - const packageJsonPaths = globSync('packages/*/package.json', { + const packageJsonPaths = globSync(PACKAGE_JSON_GLOB, { cwd: repositoryRoot, absolute: true, }); From 5544e5fd67d4f95d34f1aae1eee8bd0f1ab97c94 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Wed, 7 Oct 2026 15:33:46 +0100 Subject: [PATCH 6/7] test(e2e): Validate packed legacy bundler plugin tarballs --- dev-packages/e2e-tests/lib/packedTarballUtils.ts | 4 ++-- dev-packages/e2e-tests/lib/syncPackedTarballSymlinks.ts | 4 ++-- dev-packages/e2e-tests/validate-packed-tarball-setup.ts | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/dev-packages/e2e-tests/lib/packedTarballUtils.ts b/dev-packages/e2e-tests/lib/packedTarballUtils.ts index e5ddfdb7ee25..21edf9145e10 100644 --- a/dev-packages/e2e-tests/lib/packedTarballUtils.ts +++ b/dev-packages/e2e-tests/lib/packedTarballUtils.ts @@ -5,7 +5,7 @@ import { sync as globSync } from 'glob'; const E2E_TESTS_ROOT = path.resolve(__dirname, '..'); const REPOSITORY_ROOT = path.resolve(E2E_TESTS_ROOT, '../..'); -export const PACKAGE_JSON_GLOB = '{packages/*,packages/legacy/*}/package.json'; +export const PACKAGE_DIRS_GLOB = '{packages/*,packages/legacy/*}'; /** * Workspace @sentry and @sentry-internal packages that have a built tarball for the E2E version. @@ -15,7 +15,7 @@ export function getPublishedSentryTarballPackageNames(): string[] { const version = getE2eTestsPackageVersion(); const names: string[] = []; - for (const packageJsonPath of globSync(PACKAGE_JSON_GLOB, { + for (const packageJsonPath of globSync(`${PACKAGE_DIRS_GLOB}/package.json`, { cwd: REPOSITORY_ROOT, absolute: true, })) { diff --git a/dev-packages/e2e-tests/lib/syncPackedTarballSymlinks.ts b/dev-packages/e2e-tests/lib/syncPackedTarballSymlinks.ts index effc367b68ba..f7f6671c7e43 100644 --- a/dev-packages/e2e-tests/lib/syncPackedTarballSymlinks.ts +++ b/dev-packages/e2e-tests/lib/syncPackedTarballSymlinks.ts @@ -2,7 +2,7 @@ import * as fs from 'fs'; import * as path from 'path'; import { sync as globSync } from 'glob'; -import { PACKAGE_JSON_GLOB, packedSymlinkFilename, versionedTarballFilename } from './packedTarballUtils'; +import { PACKAGE_DIRS_GLOB, packedSymlinkFilename, versionedTarballFilename } from './packedTarballUtils'; const e2eTestsRoot = path.resolve(__dirname, '..'); const repositoryRoot = path.resolve(e2eTestsRoot, '../..'); @@ -28,7 +28,7 @@ export function syncPackedTarballSymlinks(): void { fs.rmSync(path.join(packedDir, entry.name), { recursive: true, force: true }); } - const packageJsonPaths = globSync(PACKAGE_JSON_GLOB, { + const packageJsonPaths = globSync(`${PACKAGE_DIRS_GLOB}/package.json`, { cwd: repositoryRoot, absolute: true, }); diff --git a/dev-packages/e2e-tests/validate-packed-tarball-setup.ts b/dev-packages/e2e-tests/validate-packed-tarball-setup.ts index a6cc966d56f0..3eeae74aadff 100644 --- a/dev-packages/e2e-tests/validate-packed-tarball-setup.ts +++ b/dev-packages/e2e-tests/validate-packed-tarball-setup.ts @@ -2,13 +2,14 @@ import * as assert from 'assert'; import * as fs from 'fs'; import { sync as globSync } from 'glob'; import * as path from 'path'; +import { PACKAGE_DIRS_GLOB } from './lib/packedTarballUtils'; const repositoryRoot = path.resolve(__dirname, '../..'); const e2ePkg = JSON.parse(fs.readFileSync(path.join(__dirname, 'package.json'), 'utf8')) as { version: string }; const version = e2ePkg.version; -const tarballPaths = globSync(`packages/*/sentry-*-${version}.tgz`, { +const tarballPaths = globSync(`${PACKAGE_DIRS_GLOB}/sentry-*-${version}.tgz`, { cwd: repositoryRoot, absolute: true, }); From a309bd227b613542cb333925335a6cd330759573 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Thu, 8 Oct 2026 11:38:34 +0100 Subject: [PATCH 7/7] docs: Add changelog entry for legacy bundler plugin packages --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ca19496299f..34c9222d40c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,17 @@ - "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott +### Important Changes + +- **feat(bundler-plugins): Release `@sentry/webpack-plugin`, `@sentry/vite-plugin`, `@sentry/rollup-plugin` and `@sentry/esbuild-plugin` from the SDK repository ([#25095](https://github.com/getsentry/sentry-javascript/pull/25095))** + + The four standalone bundler plugins now release together with the SDK, so their version jumps from 5.4.1 to the SDK version. Each package re-exports the matching `@sentry/bundler-plugins` entry point, which we recommend for new projects. The plugin options do not change, but the update brings these breaking changes: + + - Node.js 20.19.0 or higher is required. + - `@sentry/webpack-plugin` requires webpack 5.1 or higher. The `@sentry/webpack-plugin/webpack5` entry point still works and exports the same plugin as `@sentry/webpack-plugin`. + - The plugins use the `sentry` CLI SDK instead of `@sentry/cli`. Sentry self-hosted 26.4.2 or higher is supported. Lower versions may continue to work. + - Deploys that the plugins create on Vercel use the value of `VERCEL_TARGET_ENV` (`production`, `preview` or a custom name) as their environment, instead of `vercel-production` or `vercel-preview`. To keep the old value, set `release.deploy.env`. + ## 11.5.0 ### Important Changes