Skip to content

Align for build-time options type across high-level frameworks #14212

@lforst

Description

@lforst

Description

We noticed that we keep re-inventing the wheel when it comes to build time configuration with source map options.

To apply the learnings from the past, it would probably make sense to align the options across frameworks.

  • withSentryConfig in Next.js
  • sentry config field for the @sentry/nuxt/module module
  • sentry integration in Astro
  • sentrySolidStartVite in SolidStart
  • "@sentry/gatsby" plugin for Gatsby

The general type to be used is the BuildTImeOptionsBase

Migration

  • All previous build-time options should be marked with a @deprecated notice in JSDoc
  • The new build-time options take precedence over the old ones
  • In the next major version, we'll delete the old build-time options

Archive

First strawman proposal for the type
interface BuildTimeOptions {
    org?: string;
    project?: string;
    authToken?: string;
    sentryUrl?: string;
    headers?: Record<string, string>;
    telemetry?: boolean;
    silent?: boolean;
    debug?: boolean;
    sourcemaps?: {
      disable?: boolean;
      assets?: string | string[];
      ignore?: string | string[];
      deleteSourcemapsAfterUpload?: boolean;
    };
    release?: {
      name?: string;
      create?: boolean;
      finalize?: boolean;
      dist?: string;
      vcsRemote?: string;
      setCommits?: (
        | {
            auto: true;
            repo?: undefined;
            commit?: undefined;
          }
        | {
            auto?: false | undefined;
            repo: string;
            commit: string;
          }
      ) & {
        previousCommit?: string;
        ignoreMissing?: boolean;
        ignoreEmpty?: boolean;
      };
      deploy?: {
        env: string;
        started?: number | string;
        finished?: number | string;
        time?: number;
        name?: string;
        url?: string;
      };
    };
    bundleSizeOptimizations?: {
      excludeDebugStatements?: boolean;
      excludeTracing?: boolean;
      excludeReplayShadowDom?: boolean;
      excludeReplayIframe?: boolean;
      excludeReplayWorker?: boolean;
    };
    unstable_sentryINSERTBUILDTOOLOFCHOICEHEREPluginOptions?: SentryINSERTBUILDTOOLOFCHOICEHEREPluginOptions;
    hideSourceMaps?: boolean;
    tunnelRoute?: string;
    disableLogger?: boolean;
  };

It is not necessary to implement all of these options right out the gate when building a new SDK, however, when deciding where to put an option we should follow the decided interface.

Sub-issues

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions