@hug/ngx-sentry
Version:
Angular wrapper for the official Sentry JavaScript SDK
177 lines (124 loc) • 4.93 kB
Markdown
<h1 align="center">
@hug/ngx-sentry
</h1>
<p align="center">
<br/>
<a href="https://www.hug.ch">
<img src="https://cdn.hug.ch/svgs/hug/hug-logo-horizontal.svg" alt="hug-logo" height="54px" />
</a>
<br/><br/>
<i>Angular wrapper for the official Sentry JavaScript SDK</i>
<br/><br/>
</p>
<p align="center">
<a href="https://www.npmjs.com/package/@hug/ngx-sentry">
<img src="https://img.shields.io/npm/v/@hug/ngx-sentry.svg?color=blue&logo=npm" alt="npm version" /></a>
<a href="https://npmcharts.com/compare/@hug/ngx-sentry?minimal=true">
<img src="https://img.shields.io/npm/dw/@hug/ngx-sentry.svg?color=blue&logo=npm" alt="npm donwloads" /></a>
<a href="https://github.com/dsi-hug/ngx-sentry/blob/main/LICENSE">
<img src="https://img.shields.io/badge/license-GPLv3-ff69b4.svg" alt="license GPLv3" /></a>
</p>
<p align="center">
<a href="https://github.com/dsi-hug/ngx-sentry/actions/workflows/ci_tests.yml">
<img src="https://github.com/dsi-hug/ngx-sentry/actions/workflows/ci_tests.yml/badge.svg" alt="build status" /></a>
<a href="https://github.com/dsi-hug/ngx-sentry/blob/main/CONTRIBUTING.md#-submitting-a-pull-request-pr">
<img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg" alt="PRs welcome" /></a>
</p>
<hr/>
## Getting started
To set up or update an Angular project with this library use the Angular CLI's [schematic][schematics] commands:
#### Installation
```sh
ng add @hug/ngx-sentry
```
<details>
<summary><i>More details</i></summary>
> <br/>
>
> The `ng add` command will ask you the following questions:
>
> 1. **Name of the project in Sentry**: *the name used when creating the Sentry project*
> 2. **Data Source Name (DSN) url**: *the url provided during the Sentry project creation process*
>
> And will also perform the following actions:
>
> - Create a `.sentryclirc` file containing all the Sentry configurations
> - Initialize and configure Sentry in `main.ts`
> - Add `resolveJsonModule` and `allowSyntheticDefaultImports` to `tsconfig.json`
> - Import the `NgxSentryModule` in your Angular application module (if app is not standalone)
</details>
#### Update
```sh
ng update @hug/ngx-sentry
```
## Usage
Follow these steps to integrate your project's source maps with Sentry:
1. Generate Source Maps
```sh
ng build --source-map
```
2. Provide Source Maps to Sentry
```sh
npx ngx-sentry ./project-dist-path
```
## Options
This library is a wrapper around the official [Sentry JavaScript SDK][sentry-sdk-url] with extra functionalities and configurations.
All options available in `@sentry/browser` can be configured from `@hug/ngx-sentry`.
You shouldn't have to configure anything else but in case you wanted to, you can still do it.
#### Sentry Browser's SDK
The Sentry Browser's SDK can be configured in `main.ts`:
```ts
initSentry(options: BrowserOptions);
```
#### Error handler
The behavior of the error handler can be configured either in:
* `main.ts` *(if the app is a standalone Angular application)*
```ts
bootstrapApplication(AppComponent, {
providers: [
provideSentry(options?: ErrorHandlerOptions)
]
});
```
* `app.module.ts` *(if the app is **not** a standalone Angular application)*
```ts
@NgModule({
imports: [
NgxSentryModule.forRoot(options?: ErrorHandlerOptions)
]
})
export class AppModule { }
```
#### Current user
You can define the current user via the `setSentryUser()` api:
```ts
// import { setSentryUser } from '@hug/ngx-sentry/standalone';
// import { setSentryUser } from '@hug/ngx-sentry';
public ngOnInit(): void {
// Set the current user
setSentryUser({
email: 'rtrm@hcuge.ch',
username: 'rtrm',
attr1: 'attr1'
});
// Remove the current user
setSentryUser(null);
}
```
## Development
See the [developer docs][developer].
## Contributing
#### > Want to Help?
Want to file a bug, contribute some code or improve documentation? Excellent!
But please read up first on the guidelines for [contributing][contributing], and learn about submission process, coding rules and more.
#### > Code of Conduct
Please read and follow the [Code of Conduct][codeofconduct], and help us keep this project open and inclusive.
## Credits
Copyright (C) 2021 [HUG - Hôpitaux Universitaires Genève][dsi-hug]
[][dsi-hug]
[schematics]: https://angular.io/guide/schematics-for-libraries
[sentry-sdk-url]: https://github.com/getsentry/sentry-javascript
[developer]: https://github.com/dsi-hug/ngx-sentry/blob/main/DEVELOPER.md
[contributing]: https://github.com/dsi-hug/ngx-sentry/blob/main/CONTRIBUTING.md
[codeofconduct]: https://github.com/dsi-hug/ngx-sentry/blob/main/CODE_OF_CONDUCT.md
[dsi-hug]: https://github.com/dsi-hug