diff --git a/packages/browser/rollup.npm.config.mjs b/packages/browser/rollup.npm.config.mjs index 6d09adefc859..2edfdefdc4da 100644 --- a/packages/browser/rollup.npm.config.mjs +++ b/packages/browser/rollup.npm.config.mjs @@ -4,5 +4,13 @@ export default makeNPMConfigVariants( makeBaseNPMConfig({ // packages with bundles have a different build directory structure hasBundles: true, + packageSpecificConfig: { + output: { + // set exports to 'named' or 'auto' so that rollup doesn't warn + exports: 'named', + // set preserveModules to false because we want to bundle everything into one file. + preserveModules: false, + }, + }, }), ); diff --git a/packages/core/rollup.npm.config.mjs b/packages/core/rollup.npm.config.mjs index 84a06f2fb64a..fd61fbf7c62c 100644 --- a/packages/core/rollup.npm.config.mjs +++ b/packages/core/rollup.npm.config.mjs @@ -1,3 +1,14 @@ import { makeBaseNPMConfig, makeNPMConfigVariants } from '@sentry-internal/rollup-utils'; -export default makeNPMConfigVariants(makeBaseNPMConfig()); +export default makeNPMConfigVariants( + makeBaseNPMConfig({ + packageSpecificConfig: { + output: { + // set exports to 'named' or 'auto' so that rollup doesn't warn + exports: 'named', + // set preserveModules to false because we want to bundle everything into one file. + preserveModules: false, + }, + }, + }), +); diff --git a/packages/node-experimental/rollup.anr-worker.config.mjs b/packages/node-experimental/rollup.anr-worker.config.mjs index 48463d5763ee..bd3c1d4b825c 100644 --- a/packages/node-experimental/rollup.anr-worker.config.mjs +++ b/packages/node-experimental/rollup.anr-worker.config.mjs @@ -1,34 +1,31 @@ import { makeBaseBundleConfig } from '@sentry-internal/rollup-utils'; -function createAnrWorkerConfig(destDir, esm) { - return makeBaseBundleConfig({ - bundleType: 'node-worker', - entrypoints: ['src/integrations/anr/worker.ts'], - licenseTitle: '@sentry/node', - outputFileBase: () => 'worker-script.js', - packageSpecificConfig: { - output: { - dir: destDir, - sourcemap: false, - }, - plugins: [ - { - name: 'output-base64-worker-script', - renderChunk(code) { - const base64Code = Buffer.from(code).toString('base64'); - if (esm) { - return `export const base64WorkerScript = '${base64Code}';`; - } else { - return `exports.base64WorkerScript = '${base64Code}';`; - } - }, +export function createAnrWorkerCode() { + let base64Code; + + return { + workerRollupConfig: makeBaseBundleConfig({ + bundleType: 'node-worker', + entrypoints: ['src/integrations/anr/worker.ts'], + licenseTitle: '@sentry/node', + outputFileBase: () => 'worker-script.js', + packageSpecificConfig: { + output: { + dir: 'build/esm/integrations/anr', + sourcemap: false, }, - ], + plugins: [ + { + name: 'output-base64-worker-script', + renderChunk(code) { + base64Code = Buffer.from(code).toString('base64'); + }, + }, + ], + }, + }), + getBase64Code() { + return base64Code; }, - }); + }; } - -export const anrWorkerConfigs = [ - createAnrWorkerConfig('build/esm/integrations/anr', true), - createAnrWorkerConfig('build/cjs/integrations/anr', false), -]; diff --git a/packages/node-experimental/rollup.npm.config.mjs b/packages/node-experimental/rollup.npm.config.mjs index 88c90de4825f..17c0727d7eff 100644 --- a/packages/node-experimental/rollup.npm.config.mjs +++ b/packages/node-experimental/rollup.npm.config.mjs @@ -1,8 +1,32 @@ +import replace from '@rollup/plugin-replace'; import { makeBaseNPMConfig, makeNPMConfigVariants } from '@sentry-internal/rollup-utils'; -import { anrWorkerConfigs } from './rollup.anr-worker.config.mjs'; +import { createAnrWorkerCode } from './rollup.anr-worker.config.mjs'; + +const { workerRollupConfig, getBase64Code } = createAnrWorkerCode(); export default [ - ...makeNPMConfigVariants(makeBaseNPMConfig()), - // The ANR worker builds must come after the main build because they overwrite the worker-script.js file - ...anrWorkerConfigs, + // The worker needs to be built first since it's output is used in the main bundle. + workerRollupConfig, + ...makeNPMConfigVariants( + makeBaseNPMConfig({ + packageSpecificConfig: { + output: { + // set exports to 'named' or 'auto' so that rollup doesn't warn + exports: 'named', + // set preserveModules to false because we want to bundle everything into one file. + preserveModules: false, + }, + plugins: [ + replace({ + delimiters: ['###', '###'], + // removes some webpack warnings + preventAssignment: true, + values: { + base64WorkerScript: () => getBase64Code(), + }, + }), + ], + }, + }), + ), ]; diff --git a/packages/node-experimental/src/integrations/anr/worker-script.ts b/packages/node-experimental/src/integrations/anr/worker-script.ts index 16394eaacfe1..c70323e0fc50 100644 --- a/packages/node-experimental/src/integrations/anr/worker-script.ts +++ b/packages/node-experimental/src/integrations/anr/worker-script.ts @@ -1,2 +1,2 @@ -// This file is a placeholder that gets overwritten in the build directory. -export const base64WorkerScript = ''; +// This string is a placeholder that gets overwritten with the worker code. +export const base64WorkerScript = '###base64WorkerScript###'; diff --git a/packages/opentelemetry/rollup.npm.config.mjs b/packages/opentelemetry/rollup.npm.config.mjs index 84a06f2fb64a..fd61fbf7c62c 100644 --- a/packages/opentelemetry/rollup.npm.config.mjs +++ b/packages/opentelemetry/rollup.npm.config.mjs @@ -1,3 +1,14 @@ import { makeBaseNPMConfig, makeNPMConfigVariants } from '@sentry-internal/rollup-utils'; -export default makeNPMConfigVariants(makeBaseNPMConfig()); +export default makeNPMConfigVariants( + makeBaseNPMConfig({ + packageSpecificConfig: { + output: { + // set exports to 'named' or 'auto' so that rollup doesn't warn + exports: 'named', + // set preserveModules to false because we want to bundle everything into one file. + preserveModules: false, + }, + }, + }), +); diff --git a/packages/tracing-internal/rollup.npm.config.mjs b/packages/tracing-internal/rollup.npm.config.mjs index 84a06f2fb64a..fd61fbf7c62c 100644 --- a/packages/tracing-internal/rollup.npm.config.mjs +++ b/packages/tracing-internal/rollup.npm.config.mjs @@ -1,3 +1,14 @@ import { makeBaseNPMConfig, makeNPMConfigVariants } from '@sentry-internal/rollup-utils'; -export default makeNPMConfigVariants(makeBaseNPMConfig()); +export default makeNPMConfigVariants( + makeBaseNPMConfig({ + packageSpecificConfig: { + output: { + // set exports to 'named' or 'auto' so that rollup doesn't warn + exports: 'named', + // set preserveModules to false because we want to bundle everything into one file. + preserveModules: false, + }, + }, + }), +); diff --git a/packages/utils/rollup.npm.config.mjs b/packages/utils/rollup.npm.config.mjs index 84a06f2fb64a..fd61fbf7c62c 100644 --- a/packages/utils/rollup.npm.config.mjs +++ b/packages/utils/rollup.npm.config.mjs @@ -1,3 +1,14 @@ import { makeBaseNPMConfig, makeNPMConfigVariants } from '@sentry-internal/rollup-utils'; -export default makeNPMConfigVariants(makeBaseNPMConfig()); +export default makeNPMConfigVariants( + makeBaseNPMConfig({ + packageSpecificConfig: { + output: { + // set exports to 'named' or 'auto' so that rollup doesn't warn + exports: 'named', + // set preserveModules to false because we want to bundle everything into one file. + preserveModules: false, + }, + }, + }), +); diff --git a/packages/utils/scripts/buildRollup.ts b/packages/utils/scripts/buildRollup.ts index 80064a14aed7..2e7486f7d005 100644 --- a/packages/utils/scripts/buildRollup.ts +++ b/packages/utils/scripts/buildRollup.ts @@ -12,5 +12,5 @@ function run(cmd: string, options?: childProcess.ExecSyncOptions): string | Buff run('yarn rollup -c rollup.npm.config.mjs'); // We want to distribute the README because it contains the MIT license blurb from Sucrase and Rollup -fs.copyFileSync('src/buildPolyfills/README.md', 'build/cjs/buildPolyfills/README.md'); -fs.copyFileSync('src/buildPolyfills/README.md', 'build/esm/buildPolyfills/README.md'); +fs.copyFileSync('src/buildPolyfills/README.md', 'build/cjs/build-polyfills-license.md'); +fs.copyFileSync('src/buildPolyfills/README.md', 'build/esm/build-polyfills-license.md');