GitHub - DataDog/build-plugins: A set of universal bundler plugins to interact with Datadog directly from your builds. (original) (raw)

Datadog Build Plugins

A set of bundler plugins for:

To interact with Datadog directly from your builds.

Note

If you want to upgrade from v1 to v2, please follow our migration guide.

Table of content

Installation

yarn add -D @datadog/{{bundler}}-plugin

npm install --save-dev @datadog/{{bundler}}-plugin

Usage

In your bundler's configuration file:

const { datadog{{Bundler}}Plugin } = require('@datadog/{{bundler}}-plugin');

export const config = { plugins: [ datadog{{Bundler}}Plugin({ // Configuration }), ], };

Tip

It is best to have the plugin in the first position in order to report every other plugins.

Follow the specific documentation for each bundler:

Configuration

Full configuration object

{ auth?: { apiKey?: string; }; customPlugins?: (arg: GetPluginsArg) => UnpluginPlugin[]; logLevel?: 'debug' | 'info' | 'warn' | 'error' | 'none'; errorTracking?: { disabled?: boolean; sourcemaps?: { bailOnError?: boolean; disableGit?: boolean; dryRun?: boolean; intakeUrl?: string; maxConcurrency?: number; minifiedPathPrefix: string; releaseVersion: string; service: string; }; }; telemetry?: { disabled?: boolean; enableTracing?: boolean; endPoint?: string; output?: boolean | string | { destination: string; timings?: boolean; metrics?: boolean; }; prefix?: string; tags?: string[]; timestamp?: number; filters?: ((metric: Metric) => Metric | null)[]; }; }

auth.apiKey

default null

In order to interact with Datadog, you have to use your own API Key.

auth.appKey

default null

In order to interact with Datadog, you have to use your own Application Key.

customPlugins

default: []

This is a way for you to inject any Unplugin Plugin you want.

It's particularly useful to use our global, shared context of the main plugin.

And to prototype some new plugins in the same environment.

{ customPlugins: ({ options, context }) => { const name = 'my-custom-plugin'; const log = context.getLogger(name);

    return [{
        name,
        buildStart() {
            log.info('Hello world');
        },
    }]
};

}

Your function will receive three arguments:

The context is a shared object that is mutated during the build process.

Your function has to return an array of Unplugin Plugins definitions.
You can also use our own custom hooks.

Full context object

type GlobalContext = { // Trigger an asynchronous custom hook. asyncHook: async (name: string, ...args: any[]) => Promise; // Mirror of the user's config. auth?: { apiKey?: string; appKey?: string; }; // Available in the buildReport hook. build: BuildReport; // Available in the bundlerReport hook. bundler: BundlerReport; cwd: string; env: string; getLogger: (name: string) => Logger; // Available in the git hook. git?: Git; // Trigger a synchronous custom hook. hook: (name: string, ...args: any[]) => void; inject: Injection; // The list of all the plugin names that are currently running in the ecosystem. pluginNames: string[]; // The list of all the plugin instances that are currently running in the ecosystem. plugins: Plugin[]; // Send a log to Datadog. sendLog: (message: string, context?: Record) => Promise; // The start time of the build. start: number; // The version of the plugin. version: string; }

📝 Full documentation ➡️

disableGit

default: false

Disable the Git plugin if you don't want to use it.
For instance if you see a Error: No git remotes available error.

logLevel

default: 'warn'

Which level of log do you want to show.

metadata.name

default: null

The name of the build.
This is used to identify the build in logs, metrics and spans.

Features

Interact with Error Tracking directly from your build system.

📝 Full documentation ➡️

Configuration

datadogWebpackPlugin({ errorTracking?: { disabled?: boolean, sourcemaps?: { bailOnError?: boolean, disableGit?: boolean, dryRun?: boolean, intakeUrl?: string, maxConcurrency?: number, minifiedPathPrefix: string, releaseVersion: string, service: string, }, } });

Display and send telemetry data as metrics to Datadog.

📝 Full documentation ➡️

Configuration

datadogWebpackPlugin({ telemetry?: { disabled?: boolean, enableTracing?: boolean, endPoint?: string, output?: boolean | string | { destination: string, timings?: boolean, metrics?: boolean, }, prefix?: string, tags?: string[], timestamp?: number, filters?: ((metric: Metric) => Metric | null)[], } });

Contributing

Check out CONTRIBUTING.md for more information about how to work with the build-plugins ecosystem.

License

MIT

Back to top ⬆️