npm package: @hypo808/elastic-apm-sourcemap-webpack-plugin
Description: ElasticAPMSourceMapPlugin is a Webpack plugin that uploads sourcemaps generated by Webpack to a Elastic APM server.
Author: wuct
Latest version: 1.5.2

# ElasticAPMSourceMapPlugin

[![npm](https://img.shields.io/npm/v/elastic-apm-sourcemap-webpack-plugin.svg)](https://www.npmjs.com/package/elastic-apm-sourcemap-webpack-plugin)
[![Build Status](https://travis-ci.org/wuct/elastic-apm-sourcemap-webpack-plugin.svg?branch=master)](https://travis-ci.org/wuct/elastic-apm-sourcemap-webpack-plugin)
[![codecov](https://codecov.io/gh/wuct/elastic-apm-sourcemap-webpack-plugin/branch/master/graph/badge.svg)](https://codecov.io/gh/wuct/elastic-apm-sourcemap-webpack-plugin) [![Greenkeeper badge](https://badges.greenkeeper.io/wuct/elastic-apm-sourcemap-webpack-plugin.svg)](https://greenkeeper.io/)

[ElasticAPMSourceMapPlugin](https://github.com/wuct/elastic-apm-sourcemap-webpack-plugin) is a [Webpack](https://webpack.js.org/) plugin that uploads sourcemaps generated by Webpack to a [Elastic APM](https://www.elastic.co/solutions/apm) [server](https://www.elastic.co/guide/en/apm/server/current/index.html).

## Installation

Use npm:

```
$ npm install elastic-apm-sourcemap-webpack-plugin --save-dev
```

Use yarn:

```
$ yarn add elastic-apm-sourcemap-webpack-plugin --dev
```

## Example

An example of `webpack.config.js`:

```js
const ElasticAPMSourceMapPlugin = require('elastic-apm-sourcemap-webpack-plugin').default;
const path = require('path');
const PUBLIC_PATH = 'https://path/to/assets';

module.exports = {
  mode: 'production',
  entry: path.resolve(__dirname, './entry.js'),
  publicPath: PUBLIC_PATH,
  output: {
    path: 'build',
    filename: 'index-[hash].js'
  },
  plugins: [
    new ElasticAPMSourceMapPlugin({
      serviceName: 'SERVICE_NAME',
      serviceVersion: 'SERVICE_VERSION',
      serverURL: 'http://127.0.0.1:8200/assets/v1/sourcemaps',
      publicPath: PUBLIC_PATH,
      secret: 'SECRET',
      logLevel: 'debug'
    })
  ]
};
```

If you are using `webpack.babel.js`, you can import it without `.default`:

```js
import ElasticAPMSourceMapPlugin from 'elastic-apm-sourcemap-webpack-plugin';

export default {
  // ...
  plugins: [new ElasticAPMSourceMapPlugin(/* ... */)]
};
```

## Configuration

Pass an object to `ElasticAPMSourceMapPlugin` to configure the plugin. Available fields are:

#### serviceName: string

Required. Need to be the same value as in the [APM RUM JavaScript agent configuration](https://www.elastic.co/guide/en/apm/agent/js-base/current/configuration.html).

#### serviceVersion: string

Required. Need to be the same value as in the [APM RUM JavaScript agent configuration](https://www.elastic.co/guide/en/apm/agent/js-base/current/configuration.html).

#### serverURL: string

Required. The URL of the APM server to upload sourcemaps to.

#### publicPath: string

Required. The base path which will be used to create the `bundle_filepath`. Need to be an absolute path.

#### secret?: string

Optional. The secret token for uploading sourcemaps. This field is required if the APM server needs it.

#### logLevel?: 'info' | 'warn' | 'error' | 'trace' | 'debug' | 'silent'

Optional. Default to `'warn'`. Level of the messages that `ElasticAPMSourceMapPlugin` will log.

#### ignoreErrors?: boolean

Optional. Default to `false`. Set it to `true` to avoid adding errors to the webpack compilation.

## License

[MIT](/LICENSE.md)