What is @sentry/webpack-plugin?
The @sentry/webpack-plugin is a plugin for Webpack that enables you to automatically upload source maps to Sentry, facilitating better debugging of JavaScript errors by linking errors to the original source code, rather than the minified or compiled code served to clients. It integrates seamlessly with Sentry's error tracking and monitoring system, making it easier to track down and fix issues in production environments.
What are @sentry/webpack-plugin's main functionalities?
Source Maps Upload
Automatically uploads source maps to Sentry for better error tracking and debugging. This feature is crucial for understanding and resolving issues in production by linking errors back to the original source code.
{
plugins: [
new SentryWebpackPlugin({
include: ".", // The directory to include in source maps upload
ignore: ["node_modules", "webpack.config.js"], // Files and directories to ignore
urlPrefix: "~/static/js", // Prefix that will be added to each of the files in the `include` option
release: process.env.RELEASE_VERSION // The release version to associate the source maps with
})
]
}
Release Health Tracking
Configures release and deploy information, enabling tracking of release health within Sentry. This helps in monitoring the impact of each release on your application's stability and performance.
{
plugins: [
new SentryWebpackPlugin({
release: process.env.RELEASE_VERSION, // Define the release version
setCommits: {
repo: 'your-repo-name',
auto: true
},
deploy: {
env: 'production'
}
})
]
}
Other packages similar to @sentry/webpack-plugin
source-map-loader
The source-map-loader uses source maps to allow you to debug your original source code instead of the transformed code. While it doesn't upload source maps to Sentry, it serves a similar purpose in improving the debugging experience by handling source maps in Webpack builds.
webpack-bugsnag-plugins
This package provides a set of Webpack plugins for integrating with Bugsnag, similar to how @sentry/webpack-plugin integrates with Sentry. It includes features for uploading source maps to Bugsnag and automatically reporting build information, offering a comparable functionality for error tracking and monitoring in applications.
Sentry Webpack Plugin
A webpack plugin acting as an interface to
Sentry CLI.
Installation
Using npm:
$ npm install @sentry/webpack-plugin --only=dev
Using yarn:
$ yarn add @sentry/webpack-plugin --dev
CLI Configuration
You can use either .sentryclirc
file or ENV variables described here
https://docs.sentry.io/learn/cli/configuration/
Usage
const SentryCliPlugin = require('@sentry/webpack-plugin');
const config = {
plugins: [
new SentryCliPlugin({
include: '.',
ignoreFile: '.sentrycliignore',
ignore: ['node_modules', 'webpack.config.js'],
configFile: 'sentry.properties',
}),
],
};
Also, check the example directory.
Options
release [optional]
- unique name of a release, must be a string
, should
uniquely identify your release, defaults to
sentry-cli releases propose-version
command which should always return the
correct version (requires access to git
CLI and root directory to be a valid
repository).include [required]
- string
or array
, one or more paths that Sentry CLI
should scan recursively for sources. It will upload all .map
files and match
associated .js
filesentries [optional]
- array
or RegExp
or function(key: string): bool
, a
filter for entry points that should be processed. By default, the release will
be injected into all entry points.ignoreFile [optional]
- string
, path to a file containing list of
files/directories to ignore. Can point to .gitignore
or anything with same
formatignore [optional]
- string
or array
, one or more paths to ignore during
upload. Overrides entries in ignoreFile
file. If neither ignoreFile
or
ignore
are present, defaults to ['node_modules']
configFile [optional]
- string
, path to Sentry CLI config properties, as
described in https://docs.sentry.io/learn/cli/configuration/#properties-files.
By default, the config file is looked for upwards from the current path and
defaults from ~/.sentryclirc
are always loadedext [optional]
- array
, this sets the file extensions to be
considered. By default the following file extensions are processed: js, map,
jsbundle and bundle.urlPrefix [optional]
- string
, this sets an URL prefix at the beginning
of all files. This defaults to ~/
but you might want to set this to the
full URL. This is also useful if your files are stored in a sub folder. eg:
url-prefix '~/static/js'
urlSuffix [optional]
- string
, this sets an URL suffix at the end of all
files. Useful for appending query parameters.validate [optional]
- boolean
, this attempts sourcemap validation before
upload when rewriting is not enabled. It will spot a variety of issues with
source maps and cancel the upload if any are found. This is not the default as
this can cause false positives.stripPrefix [optional]
- array
, when paired with rewrite
this will
chop-off a prefix from uploaded files. For instance you can use this to remove
a path that is build machine specific.stripCommonPrefix [optional]
- boolean
, when paired with rewrite
this
will add ~
to the stripPrefix
array.sourceMapReference [optional]
- boolean
, this prevents the automatic
detection of sourcemap references.rewrite [optional]
- boolean
, enables rewriting of matching sourcemaps so
that indexed maps are flattened and missing sources are inlined if possible.,
defaults to true
dryRun [optional]
- boolean
, attempts a dry run (useful for dev
environments)debug [optional]
- boolean
, print some useful debug informationsilent [optional]
- boolean
, if true
, all logs are suppressed (useful for --json
option)errorHandler [optional]
- function(err: Error, invokeErr: function(): void): void
, when Cli error occurs, plugin calls this function. webpack compilation failure can be chosen by calling invokeErr
callback or not. default (err, invokeErr) => { invokeErr() }
set-commits options:
commit [optional]
- string
, the current (last) commit in the releasepreviousCommit [optional]
- string
, the commit before the beginning of this release (in other words, the last commit of the previous release). If omitted, this will default to the last commit of the previous release in Sentry. If there was no previous release, the last 10 commits will be usedrepo [optional]
- string
, the full repo name as defined in Sentryauto [optional]
- boolean
, automatically choose the associated commit (uses the current commit). Overrides other options
You can find more information about these options in our official docs:
https://docs.sentry.io/cli/releases/#sentry-cli-sourcemaps