diff --git a/packages/config/package.json b/packages/config/package.json index f94c7e1c0..a6c162a70 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -29,6 +29,7 @@ "@pmmmwh/react-refresh-webpack-plugin": "^0.5.15", "@redhat-cloud-services/frontend-components-config-utilities": "^4.7.1", "@redhat-cloud-services/tsc-transform-imports": "^1.0.26", + "@sentry/webpack-plugin": "^4.5.0", "@swc/core": "^1.3.76", "assert": "^2.0.0", "axios": "^1.12.2", diff --git a/packages/config/src/lib/createPlugins.ts b/packages/config/src/lib/createPlugins.ts index 8f3bffb92..4b6591d34 100644 --- a/packages/config/src/lib/createPlugins.ts +++ b/packages/config/src/lib/createPlugins.ts @@ -6,11 +6,11 @@ const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const { CleanWebpackPlugin } = require('clean-webpack-plugin'); const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin'); const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin'); +const { sentryWebpackPlugin } = require('@sentry/webpack-plugin'); const { glob } = require('glob'); const path = require('path'); export type WebpackPluginDefinition = undefined | null | false | '' | 0 | ((this: Compiler, compiler: Compiler) => void) | WebpackPluginInstance; - export interface CreatePluginsOptions extends CommonConfigOptions { generateSourceMaps?: boolean; plugins?: WebpackPluginDefinition[]; @@ -68,6 +68,25 @@ export const createPlugins = ({ ...(hasTsConfig ? [new ForkTsCheckerWebpackPlugin()] : []), ...(plugins || []), ...(internalHotReload ? [new ReactRefreshWebpackPlugin()] : []), + // Put the sentry plugin at the end of the plugins array + ...(process.env.ENABLE_SENTRY + ? [ + sentryWebpackPlugin({ + ...(process.env.SENTRY_AUTH_TOKEN && { + authToken: process.env.SENTRY_AUTH_TOKEN, + }), + org: process.env.SENTRY_ORG, + project: process.env.SENTRY_PROJECT, + release: process.env.SENTRY_RELEASE, + moduleMetadata: ({ release }: { release: string }) => ({ + dsn: process.env.SENTRY_DSN, + org: process.env.SENTRY_ORG, + project: process.env.SENTRY_PROJECT, + release, + }), + }), + ] + : []), ]; };