# build-plugin **Repository Path**: mirrors_DataDog/build-plugin ## Basic Information - **Project Name**: build-plugin - **Description**: A set of universal bundler plugins to interact with Datadog directly from your builds. - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-26 - **Last Updated**: 2025-09-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Datadog Build Plugins A set of bundler plugins for: - [ESBuild esbuild `@datadog/esbuild-plugin`](/packages/published/esbuild-plugin#readme) - [Rollup Rollup `@datadog/rollup-plugin`](/packages/published/rollup-plugin#readme) - [Rspack Rspack `@datadog/rspack-plugin`](/packages/published/rspack-plugin#readme) - [Vite Vite `@datadog/vite-plugin`](/packages/published/vite-plugin#readme) - [Webpack Webpack `@datadog/webpack-plugin`](/packages/published/webpack-plugin#readme) To interact with Datadog directly from your builds. > [!NOTE] > **Migrations**: > - [v1 to v2](/MIGRATIONS.md#v1-to-v2). > - [v2 to v3](/MIGRATIONS.md#v2-to-v3). ## Table of content - [Installation](#installation) - [Usage](#usage) - [Configuration](#configuration) - [`auth.apiKey`](#authapikey) - [`auth.appKey`](#authappkey) - [`auth.site`](#authsite) - [`customPlugins`](#customplugins) - [`enableGit`](#enablegit) - [`logLevel`](#loglevel) - [`metadata.name`](#metadataname) - [Features](#features) - [Error Tracking](#error-tracking-----) - [Metrics](#metrics-----) - [Output](#output-----) - [Contributing](#contributing) - [License](#license) ## Installation - Yarn ```bash yarn add -D @datadog/{{bundler}}-plugin ``` - npm ```bash npm install --save-dev @datadog/{{bundler}}-plugin ``` ## Usage In your bundler's configuration file: ```js 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: - [ESBuild esbuild `@datadog/esbuild-plugin`](/packages/published/esbuild-plugin#readme) - [Rollup Rollup `@datadog/rollup-plugin`](/packages/published/rollup-plugin#readme) - [Rspack Rspack `@datadog/rspack-plugin`](/packages/published/rspack-plugin#readme) - [Vite Vite `@datadog/vite-plugin`](/packages/published/vite-plugin#readme) - [Webpack Webpack `@datadog/webpack-plugin`](/packages/published/webpack-plugin#readme) ## Configuration
Full configuration object ```typescript { auth?: { apiKey?: string; appKey?: string; site?: string; }; customPlugins?: (arg: GetPluginsArg) => UnpluginPlugin[]; enableGit?: boolean; logLevel?: 'debug' | 'info' | 'warn' | 'error' | 'none', metadata?: { name?: string; };; errorTracking?: { enable?: boolean; sourcemaps?: { bailOnError?: boolean; dryRun?: boolean; maxConcurrency?: number; minifiedPathPrefix: string; releaseVersion: string; service: string; }; }; metrics?: { enable?: boolean; enableDefaultPrefix?: boolean; enableTracing?: boolean; prefix?: string; tags?: string[]; timestamp?: number; filters?: ((metric: Metric) => Metric | null)[]; }; output?: { enable?: boolean; path?: string; files?: { build?: boolean | string; bundler?: boolean | string; dependencies?: boolean | string; errors?: boolean | string; logs?: boolean | string; metrics?: boolean | string; timings?: boolean | string; warnings?: boolean | string; }; }; } ```
### `auth.apiKey` > default `null` In order to interact with Datadog, you have to use [your own API Key](https://app.datadoghq.com/organization-settings/api-keys). ### `auth.appKey` > default `null` In order to interact with Datadog, you have to use [your own Application Key](https://app.datadoghq.com/organization-settings/application-keys). ### `auth.site` > default `'datadoghq.com'` The Datadog site to use APIs from. Possible values are `'datadoghq.com'`, `'datadoghq.eu'`, `'us3.datadoghq.com'`, `'us5.datadoghq.com'`, `'ap1.datadoghq.com'`, etc. This configuration controls which Datadog site telemetry metrics and error tracking sourcemaps are sent to. > [!NOTE] > The `DATADOG_SITE` environment variable takes priority over this configuration. > The order of precedence is: > 1. `DATADOG_SITE` or `DD_SITE` environment variable (highest priority) > 2. `auth.site` configuration > 3. `'datadoghq.com'` (default) ### `customPlugins` > default: `[]` This is a way for you to inject any [Unplugin Plugin](https://unplugin.unjs.io/guide/) you want. It's particularly useful to use our [global, shared context](/packages/factory/README.md#global-context) of the main plugin. And to prototype some new plugins in the same environment. ```typescript { 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: - `options`: The options you passed to the main plugin (including your custom plugins). - `context`: The global context shared accross our plugin. - `bundler`: The currently running bundler's instance. The `context` is a shared object that is mutated during the build process. Your function has to return an array of [Unplugin Plugins definitions](https://unplugin.unjs.io/guide/#supported-hooks).
You can also use our own [custom hooks](/packages/plugins/custom-hooks#existing-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;
    buildRoot: 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 ➡️](/packages/factory#global-context) ### `enableGit` > default: `true` Enable the [Git plugin](/packages/plugins/git#readme) to use git information in your build.
Set to `false` 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 ### Error Tracking ESBuild Rollup Rspack Vite Webpack > Interact with Error Tracking directly from your build system. #### [📝 Full documentation ➡️](/packages/plugins/error-tracking#readme)
Configuration ```typescript datadogWebpackPlugin({ errorTracking?: { enable?: boolean, sourcemaps?: { bailOnError?: boolean, dryRun?: boolean, maxConcurrency?: number, minifiedPathPrefix: string, releaseVersion: string, service: string, }, } }); ```
### Metrics ESBuild Rollup Rspack Vite Webpack > Display and send metrics to Datadog. #### [📝 Full documentation ➡️](/packages/plugins/metrics#readme)
Configuration ```typescript datadogWebpackPlugin({ metrics?: { enable?: boolean, enableDefaultPrefix?: boolean, enableTracing?: boolean, prefix?: string, tags?: string[], timestamp?: number, filters?: ((metric: Metric) => Metric | null)[], } }); ```
### Output ESBuild Rollup Rspack Vite Webpack > Export build reports, metrics, and bundler data to JSON files for analysis and monitoring. #### [📝 Full documentation ➡️](/packages/plugins/output#readme)
Configuration ```typescript datadogWebpackPlugin({ output?: { enable?: boolean, path?: string, files?: { build?: boolean | string, bundler?: boolean | string, dependencies?: boolean | string, errors?: boolean | string, logs?: boolean | string, metrics?: boolean | string, timings?: boolean | string, warnings?: boolean | string, }, } }); ```
## Contributing Check out [CONTRIBUTING.md](/CONTRIBUTING.md) for more information about how to work with the build-plugins ecosystem. ## License [MIT](/LICENSE) ### [Back to top :arrow_up:](#top)