From 13f348e79851fed19baf04fda653adc78061a4de Mon Sep 17 00:00:00 2001 From: Benoit Zugmeyer Date: Thu, 30 Oct 2025 19:00:09 +0100 Subject: [PATCH 1/7] =?UTF-8?q?=F0=9F=91=B7=20build=20modules=20using=20a?= =?UTF-8?q?=20script?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/package.json | 5 +- packages/core/tsconfig.cjs.json | 12 ---- packages/core/tsconfig.esm.json | 11 --- packages/flagging/package.json | 6 +- packages/flagging/tsconfig.cjs.json | 12 ---- packages/flagging/tsconfig.esm.json | 12 ---- packages/logs/package.json | 6 +- packages/logs/tsconfig.cjs.json | 12 ---- packages/logs/tsconfig.esm.json | 12 ---- packages/rum-core/package.json | 5 +- packages/rum-core/tsconfig.cjs.json | 12 ---- packages/rum-core/tsconfig.esm.json | 11 --- packages/rum-react/package.json | 4 +- packages/rum-react/tsconfig.cjs.json | 12 ---- packages/rum-react/tsconfig.esm.json | 11 --- packages/rum-slim/package.json | 5 +- packages/rum-slim/tsconfig.cjs.json | 12 ---- packages/rum-slim/tsconfig.esm.json | 11 --- packages/rum/package.json | 6 +- packages/rum/tsconfig.cjs.json | 13 ---- packages/rum/tsconfig.esm.json | 12 ---- scripts/build/build-package.ts | 102 +++++++++++++++++++++++++++ scripts/build/replace-build-env.ts | 27 ------- 23 files changed, 113 insertions(+), 218 deletions(-) delete mode 100644 packages/core/tsconfig.cjs.json delete mode 100644 packages/core/tsconfig.esm.json delete mode 100644 packages/flagging/tsconfig.cjs.json delete mode 100644 packages/flagging/tsconfig.esm.json delete mode 100644 packages/logs/tsconfig.cjs.json delete mode 100644 packages/logs/tsconfig.esm.json delete mode 100644 packages/rum-core/tsconfig.cjs.json delete mode 100644 packages/rum-core/tsconfig.esm.json delete mode 100644 packages/rum-react/tsconfig.cjs.json delete mode 100644 packages/rum-react/tsconfig.esm.json delete mode 100644 packages/rum-slim/tsconfig.cjs.json delete mode 100644 packages/rum-slim/tsconfig.esm.json delete mode 100644 packages/rum/tsconfig.cjs.json delete mode 100644 packages/rum/tsconfig.esm.json create mode 100644 scripts/build/build-package.ts delete mode 100644 scripts/build/replace-build-env.ts diff --git a/packages/core/package.json b/packages/core/package.json index cefb22ed8e..a75630310a 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -8,10 +8,7 @@ "sideEffects": false, "scripts": { "pack": "yarn pack", - "build": "run-p build:cjs build:esm", - "build:cjs": "rm -rf cjs && tsc -p tsconfig.cjs.json && yarn replace-build-env cjs", - "build:esm": "rm -rf esm && tsc -p tsconfig.esm.json && yarn replace-build-env esm", - "replace-build-env": "node ../../scripts/build/replace-build-env.ts" + "build": "node ../../scripts/build/build-package.ts --modules" }, "repository": { "type": "git", diff --git a/packages/core/tsconfig.cjs.json b/packages/core/tsconfig.cjs.json deleted file mode 100644 index d78ac200b2..0000000000 --- a/packages/core/tsconfig.cjs.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "module": "commonjs", - "rootDir": "./src/", - "outDir": "./cjs/" - }, - "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/core/tsconfig.esm.json b/packages/core/tsconfig.esm.json deleted file mode 100644 index 9d1d447af3..0000000000 --- a/packages/core/tsconfig.esm.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "rootDir": "./src/", - "outDir": "./esm/" - }, - "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/flagging/package.json b/packages/flagging/package.json index bc188a9716..6bfc372cb4 100644 --- a/packages/flagging/package.json +++ b/packages/flagging/package.json @@ -7,11 +7,9 @@ "types": "cjs/entries/main.d.ts", "scripts": { "pack": "yarn pack", - "build": "run-p build:cjs build:esm build:bundle", + "build": "run-p build:modules build:bundle", "build:bundle": "rm -rf bundle && SDK_SETUP=cdn webpack --disable-interpret --mode=production", - "build:cjs": "rm -rf cjs && tsc -p tsconfig.cjs.json && yarn replace-build-env cjs", - "build:esm": "rm -rf esm && tsc -p tsconfig.esm.json && yarn replace-build-env esm", - "replace-build-env": "node ../../scripts/build/replace-build-env.ts" + "build:modules": "node ../../scripts/build/build-package.ts --modules" }, "dependencies": { "@datadog/browser-core": "6.22.0" diff --git a/packages/flagging/tsconfig.cjs.json b/packages/flagging/tsconfig.cjs.json deleted file mode 100644 index d78ac200b2..0000000000 --- a/packages/flagging/tsconfig.cjs.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "module": "commonjs", - "rootDir": "./src/", - "outDir": "./cjs/" - }, - "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/flagging/tsconfig.esm.json b/packages/flagging/tsconfig.esm.json deleted file mode 100644 index fee4f61227..0000000000 --- a/packages/flagging/tsconfig.esm.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "module": "es6", - "rootDir": "./src/", - "outDir": "./esm/" - }, - "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/logs/package.json b/packages/logs/package.json index a3a96902d2..1331a19ad0 100644 --- a/packages/logs/package.json +++ b/packages/logs/package.json @@ -7,11 +7,9 @@ "types": "cjs/entries/main.d.ts", "scripts": { "pack": "yarn pack", - "build": "run-p build:cjs build:esm build:bundle", + "build": "run-p build:modules build:bundle", "build:bundle": "rm -rf bundle && SDK_SETUP=cdn webpack --disable-interpret --mode=production", - "build:cjs": "rm -rf cjs && tsc -p tsconfig.cjs.json && yarn replace-build-env cjs", - "build:esm": "rm -rf esm && tsc -p tsconfig.esm.json && yarn replace-build-env esm", - "replace-build-env": "node ../../scripts/build/replace-build-env.ts" + "build:modules": "node ../../scripts/build/build-package.ts --modules" }, "dependencies": { "@datadog/browser-core": "6.23.0" diff --git a/packages/logs/tsconfig.cjs.json b/packages/logs/tsconfig.cjs.json deleted file mode 100644 index d78ac200b2..0000000000 --- a/packages/logs/tsconfig.cjs.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "module": "commonjs", - "rootDir": "./src/", - "outDir": "./cjs/" - }, - "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/logs/tsconfig.esm.json b/packages/logs/tsconfig.esm.json deleted file mode 100644 index fee4f61227..0000000000 --- a/packages/logs/tsconfig.esm.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "module": "es6", - "rootDir": "./src/", - "outDir": "./esm/" - }, - "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/rum-core/package.json b/packages/rum-core/package.json index f0dd7783da..f541f747c1 100644 --- a/packages/rum-core/package.json +++ b/packages/rum-core/package.json @@ -7,10 +7,7 @@ "types": "cjs/index.d.ts", "scripts": { "pack": "yarn pack", - "build": "run-p build:cjs build:esm", - "build:cjs": "rm -rf cjs && tsc -p tsconfig.cjs.json && yarn replace-build-env cjs", - "build:esm": "rm -rf esm && tsc -p tsconfig.esm.json && yarn replace-build-env esm", - "replace-build-env": "node ../../scripts/build/replace-build-env.ts" + "build": "node ../../scripts/build/build-package.ts --modules" }, "dependencies": { "@datadog/browser-core": "6.23.0" diff --git a/packages/rum-core/tsconfig.cjs.json b/packages/rum-core/tsconfig.cjs.json deleted file mode 100644 index d78ac200b2..0000000000 --- a/packages/rum-core/tsconfig.cjs.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "module": "commonjs", - "rootDir": "./src/", - "outDir": "./cjs/" - }, - "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/rum-core/tsconfig.esm.json b/packages/rum-core/tsconfig.esm.json deleted file mode 100644 index 9d1d447af3..0000000000 --- a/packages/rum-core/tsconfig.esm.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "rootDir": "./src/", - "outDir": "./esm/" - }, - "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/rum-react/package.json b/packages/rum-react/package.json index ac24842189..0171cdd876 100644 --- a/packages/rum-react/package.json +++ b/packages/rum-react/package.json @@ -7,9 +7,7 @@ "types": "cjs/entries/main.d.ts", "scripts": { "pack": "yarn pack", - "build": "run-p build:cjs build:esm", - "build:cjs": "rm -rf cjs && tsc -p tsconfig.cjs.json --noCheck", - "build:esm": "rm -rf esm && tsc -p tsconfig.esm.json --noCheck", + "build": "node ../../scripts/build/build-package.ts --modules", "prepack": "npm run build" }, "dependencies": { diff --git a/packages/rum-react/tsconfig.cjs.json b/packages/rum-react/tsconfig.cjs.json deleted file mode 100644 index d78ac200b2..0000000000 --- a/packages/rum-react/tsconfig.cjs.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "module": "commonjs", - "rootDir": "./src/", - "outDir": "./cjs/" - }, - "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/rum-react/tsconfig.esm.json b/packages/rum-react/tsconfig.esm.json deleted file mode 100644 index 9d1d447af3..0000000000 --- a/packages/rum-react/tsconfig.esm.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "rootDir": "./src/", - "outDir": "./esm/" - }, - "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/rum-slim/package.json b/packages/rum-slim/package.json index 8f67cb2401..b77066946b 100644 --- a/packages/rum-slim/package.json +++ b/packages/rum-slim/package.json @@ -7,10 +7,9 @@ "types": "cjs/entries/main.d.ts", "scripts": { "pack": "yarn pack", - "build": "run-p build:cjs build:esm build:bundle", + "build": "run-p build:modules build:bundle", "build:bundle": "rm -rf bundle && SDK_SETUP=cdn webpack --disable-interpret --mode=production", - "build:cjs": "rm -rf cjs && tsc -p tsconfig.cjs.json", - "build:esm": "rm -rf esm && tsc -p tsconfig.esm.json" + "build:modules": "node ../../scripts/build/build-package.ts --modules" }, "dependencies": { "@datadog/browser-core": "6.23.0", diff --git a/packages/rum-slim/tsconfig.cjs.json b/packages/rum-slim/tsconfig.cjs.json deleted file mode 100644 index d78ac200b2..0000000000 --- a/packages/rum-slim/tsconfig.cjs.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "module": "commonjs", - "rootDir": "./src/", - "outDir": "./cjs/" - }, - "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/rum-slim/tsconfig.esm.json b/packages/rum-slim/tsconfig.esm.json deleted file mode 100644 index 9d1d447af3..0000000000 --- a/packages/rum-slim/tsconfig.esm.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "rootDir": "./src/", - "outDir": "./esm/" - }, - "include": ["./src/**/*.ts"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/rum/package.json b/packages/rum/package.json index 8c3ad07013..60c86b8c5d 100644 --- a/packages/rum/package.json +++ b/packages/rum/package.json @@ -7,11 +7,9 @@ "types": "cjs/entries/main.d.ts", "scripts": { "pack": "yarn pack", - "build": "run-p build:cjs build:esm build:bundle", + "build": "run-p build:modules build:bundle", "build:bundle": "rm -rf bundle && SDK_SETUP=cdn webpack --disable-interpret --mode=production", - "build:cjs": "rm -rf cjs && tsc -p tsconfig.cjs.json && yarn replace-build-env cjs", - "build:esm": "rm -rf esm && tsc -p tsconfig.esm.json && yarn replace-build-env esm", - "replace-build-env": "node ../../scripts/build/replace-build-env.ts" + "build:modules": "node ../../scripts/build/build-package.ts --modules" }, "dependencies": { "@datadog/browser-core": "6.23.0", diff --git a/packages/rum/tsconfig.cjs.json b/packages/rum/tsconfig.cjs.json deleted file mode 100644 index 1106af4343..0000000000 --- a/packages/rum/tsconfig.cjs.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "allowJs": true, - "module": "commonjs", - "rootDir": "./src/", - "outDir": "./cjs/" - }, - "include": ["./src"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/packages/rum/tsconfig.esm.json b/packages/rum/tsconfig.esm.json deleted file mode 100644 index 815687627a..0000000000 --- a/packages/rum/tsconfig.esm.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": ".", - "declaration": true, - "allowJs": true, - "rootDir": "./src/", - "outDir": "./esm/" - }, - "include": ["./src"], - "exclude": ["./src/**/*.spec.ts", "./src/**/*.specHelper.ts"] -} diff --git a/scripts/build/build-package.ts b/scripts/build/build-package.ts new file mode 100644 index 0000000000..a4274cc30c --- /dev/null +++ b/scripts/build/build-package.ts @@ -0,0 +1,102 @@ +import fs from 'node:fs/promises' +import { parseArgs } from 'node:util' +import ts from 'typescript' +import { globSync } from 'glob' + +import { printLog, runMain } from '../lib/executionUtils.ts' +import { modifyFile } from '../lib/filesUtils.ts' +import { buildEnvKeys, getBuildEnvValue } from '../lib/buildEnv.ts' + +runMain(async () => { + const { values } = parseArgs({ + options: { + modules: { + type: 'boolean', + }, + verbose: { + type: 'boolean', + default: false, + }, + }, + }) + + if (values.modules) { + printLog('Building modules...') + await buildModules({ + outDir: './cjs', + module: 'commonjs', + verbose: values.verbose, + }) + await buildModules({ + outDir: './esm', + module: 'es2020', + verbose: values.verbose, + }) + } +}) + +async function buildModules({ outDir, module, verbose }: { outDir: string; module: string; verbose: boolean }) { + await fs.rm(outDir, { recursive: true, force: true }) + + // TODO: in the future, consider building packages with something else than typescript (ex: + // rspack, tsdown...) + + const parsed = ts.parseJsonConfigFileContent( + { + extends: '../../tsconfig.base.json', + compilerOptions: { + baseUrl: '.', + declaration: true, + allowJs: true, + module, + rootDir: './src/', + outDir, + }, + include: ['./src'], + exclude: ['./src/**/*.spec.*', './src/**/*.specHelper.*'], + }, + ts.sys, + process.cwd(), + undefined, + 'tsconfig.json' // just used in messages + ) + + const host = ts.createCompilerHost(parsed.options) + const program = ts.createProgram({ + rootNames: parsed.fileNames, + options: parsed.options, + host, + }) + + const emitResult = program.emit() + const diagnostics = ts.getPreEmitDiagnostics(program).concat(emitResult.diagnostics) + + if (diagnostics.length) { + const formatHost: ts.FormatDiagnosticsHost = { + getCanonicalFileName: (f) => f, + // eslint-disable-next-line @typescript-eslint/unbound-method + getCurrentDirectory: ts.sys.getCurrentDirectory, + getNewLine: () => ts.sys.newLine, + } + console.error(ts.formatDiagnosticsWithColorAndContext(diagnostics, formatHost)) + } + + if (emitResult.emitSkipped) { + throw new Error('Failed to build package') + } + + for (const path of globSync('**/*.js', { cwd: outDir, absolute: true })) { + if (await modifyFile(path, (content: string) => replaceBuildEnv(content))) { + if (verbose) { + printLog(`Replaced BuildEnv in ${path}`) + } + } + } + + function replaceBuildEnv(content: string): string { + return buildEnvKeys.reduce( + (content, key) => content.replaceAll(`__BUILD_ENV__${key}__`, () => JSON.stringify(getBuildEnvValue(key))), + content + ) + } +} diff --git a/scripts/build/replace-build-env.ts b/scripts/build/replace-build-env.ts deleted file mode 100644 index 23554f6003..0000000000 --- a/scripts/build/replace-build-env.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { globSync } from 'glob' -import { printLog, runMain } from '../lib/executionUtils.ts' -import { modifyFile } from '../lib/filesUtils.ts' -import { buildEnvKeys, getBuildEnvValue } from '../lib/buildEnv.ts' - -/** - * Replace BuildEnv in build files - * Usage: - * BUILD_MODE=zzz node replace-build-env.ts /path/to/build/directory - */ - -runMain(async () => { - const buildDirectory = process.argv[2] - - for (const path of globSync('**/*.js', { cwd: buildDirectory, absolute: true })) { - if (await modifyFile(path, (content: string) => replaceBuildEnv(content))) { - printLog(`Replaced BuildEnv in ${path}`) - } - } -}) - -function replaceBuildEnv(content: string): string { - return buildEnvKeys.reduce( - (content, key) => content.replaceAll(`__BUILD_ENV__${key}__`, () => JSON.stringify(getBuildEnvValue(key))), - content - ) -} From daf11300e14678df860018f8c02289a20a484a5c Mon Sep 17 00:00:00 2001 From: Benoit Zugmeyer Date: Fri, 31 Oct 2025 10:27:51 +0100 Subject: [PATCH 2/7] =?UTF-8?q?=F0=9F=91=B7=20build=20bundles=20using=20a?= =?UTF-8?q?=20script?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/flagging/package.json | 5 ++-- packages/flagging/webpack.config.mts | 10 -------- packages/logs/package.json | 5 ++-- packages/logs/webpack.config.mts | 10 -------- packages/rum-slim/package.json | 5 ++-- packages/rum-slim/webpack.config.mts | 10 -------- packages/rum/package.json | 5 ++-- packages/rum/webpack.config.mts | 10 -------- packages/worker/package.json | 3 ++- packages/worker/webpack.config.mts | 10 -------- scripts/build/build-package.ts | 37 ++++++++++++++++++++++++++++ 11 files changed, 47 insertions(+), 63 deletions(-) delete mode 100644 packages/flagging/webpack.config.mts delete mode 100644 packages/logs/webpack.config.mts delete mode 100644 packages/rum-slim/webpack.config.mts delete mode 100644 packages/rum/webpack.config.mts delete mode 100644 packages/worker/webpack.config.mts diff --git a/packages/flagging/package.json b/packages/flagging/package.json index 6bfc372cb4..901d299606 100644 --- a/packages/flagging/package.json +++ b/packages/flagging/package.json @@ -7,9 +7,8 @@ "types": "cjs/entries/main.d.ts", "scripts": { "pack": "yarn pack", - "build": "run-p build:modules build:bundle", - "build:bundle": "rm -rf bundle && SDK_SETUP=cdn webpack --disable-interpret --mode=production", - "build:modules": "node ../../scripts/build/build-package.ts --modules" + "build": "node ../../scripts/build/build-package.ts --modules --bundle datadog-flagging.js", + "build:bundle": "node ../../scripts/build/build-package.ts --bundle datadog-flagging.js" }, "dependencies": { "@datadog/browser-core": "6.22.0" diff --git a/packages/flagging/webpack.config.mts b/packages/flagging/webpack.config.mts deleted file mode 100644 index f12387f8d3..0000000000 --- a/packages/flagging/webpack.config.mts +++ /dev/null @@ -1,10 +0,0 @@ -import path from 'path' -import type webpack from 'webpack' -import webpackBase from '../../webpack.base.ts' - -export default (_env: unknown, argv: { mode?: webpack.Configuration['mode'] }) => - webpackBase({ - mode: argv.mode, - entry: path.resolve(import.meta.dirname, 'src/entries/main.ts'), - filename: 'datadog-flagging.js', - }) diff --git a/packages/logs/package.json b/packages/logs/package.json index 1331a19ad0..3d00c9cd30 100644 --- a/packages/logs/package.json +++ b/packages/logs/package.json @@ -7,9 +7,8 @@ "types": "cjs/entries/main.d.ts", "scripts": { "pack": "yarn pack", - "build": "run-p build:modules build:bundle", - "build:bundle": "rm -rf bundle && SDK_SETUP=cdn webpack --disable-interpret --mode=production", - "build:modules": "node ../../scripts/build/build-package.ts --modules" + "build": "node ../../scripts/build/build-package.ts --modules --bundle datadog-logs.js", + "build:bundle": "node ../../scripts/build/build-package.ts --bundle datadog-logs.js" }, "dependencies": { "@datadog/browser-core": "6.23.0" diff --git a/packages/logs/webpack.config.mts b/packages/logs/webpack.config.mts deleted file mode 100644 index 0ab813e642..0000000000 --- a/packages/logs/webpack.config.mts +++ /dev/null @@ -1,10 +0,0 @@ -import path from 'path' -import type webpack from 'webpack' -import webpackBase from '../../webpack.base.ts' - -export default (_env: unknown, argv: { mode?: webpack.Configuration['mode'] }) => - webpackBase({ - mode: argv.mode, - entry: path.resolve(import.meta.dirname, 'src/entries/main.ts'), - filename: 'datadog-logs.js', - }) diff --git a/packages/rum-slim/package.json b/packages/rum-slim/package.json index b77066946b..a974852aba 100644 --- a/packages/rum-slim/package.json +++ b/packages/rum-slim/package.json @@ -7,9 +7,8 @@ "types": "cjs/entries/main.d.ts", "scripts": { "pack": "yarn pack", - "build": "run-p build:modules build:bundle", - "build:bundle": "rm -rf bundle && SDK_SETUP=cdn webpack --disable-interpret --mode=production", - "build:modules": "node ../../scripts/build/build-package.ts --modules" + "build": "node ../../scripts/build/build-package.ts --modules --bundle datadog-rum-slim.js", + "build:bundle": "node ../../scripts/build/build-package.ts --bundle datadog-rum-slim.js" }, "dependencies": { "@datadog/browser-core": "6.23.0", diff --git a/packages/rum-slim/webpack.config.mts b/packages/rum-slim/webpack.config.mts deleted file mode 100644 index 26cb6f3743..0000000000 --- a/packages/rum-slim/webpack.config.mts +++ /dev/null @@ -1,10 +0,0 @@ -import path from 'path' -import type webpack from 'webpack' -import webpackBase from '../../webpack.base.ts' - -export default (_env: unknown, argv: { mode?: webpack.Configuration['mode'] }) => - webpackBase({ - mode: argv.mode, - entry: path.resolve(import.meta.dirname, 'src/entries/main.ts'), - filename: 'datadog-rum-slim.js', - }) diff --git a/packages/rum/package.json b/packages/rum/package.json index 60c86b8c5d..46e16fdd53 100644 --- a/packages/rum/package.json +++ b/packages/rum/package.json @@ -7,9 +7,8 @@ "types": "cjs/entries/main.d.ts", "scripts": { "pack": "yarn pack", - "build": "run-p build:modules build:bundle", - "build:bundle": "rm -rf bundle && SDK_SETUP=cdn webpack --disable-interpret --mode=production", - "build:modules": "node ../../scripts/build/build-package.ts --modules" + "build": "node ../../scripts/build/build-package.ts --modules --bundle datadog-rum.js", + "build:bundle": "node ../../scripts/build/build-package.ts --bundle datadog-rum.js" }, "dependencies": { "@datadog/browser-core": "6.23.0", diff --git a/packages/rum/webpack.config.mts b/packages/rum/webpack.config.mts deleted file mode 100644 index 74361fe83d..0000000000 --- a/packages/rum/webpack.config.mts +++ /dev/null @@ -1,10 +0,0 @@ -import path from 'path' -import type webpack from 'webpack' -import webpackBase from '../../webpack.base.ts' - -export default (_env: unknown, argv: { mode?: webpack.Configuration['mode'] }) => - webpackBase({ - mode: argv.mode, - entry: path.resolve(import.meta.dirname, 'src/entries/main.ts'), - filename: 'datadog-rum.js', - }) diff --git a/packages/worker/package.json b/packages/worker/package.json index b6e1cdb9c2..eb2e6ad622 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -5,7 +5,8 @@ "main": "bundle/worker.js", "scripts": { "pack": "yarn pack", - "build": "rm -rf bundle && webpack --disable-interpret --mode=production" + "build": "node ../../scripts/build/build-package.ts --bundle worker.js", + "build:bundle": "yarn build" }, "dependencies": { "@datadog/browser-core": "6.23.0" diff --git a/packages/worker/webpack.config.mts b/packages/worker/webpack.config.mts deleted file mode 100644 index 7f75d48873..0000000000 --- a/packages/worker/webpack.config.mts +++ /dev/null @@ -1,10 +0,0 @@ -import path from 'path' -import type webpack from 'webpack' -import webpackBase from '../../webpack.base.ts' - -export default (_env: unknown, argv: { mode?: webpack.Configuration['mode'] }) => - webpackBase({ - mode: argv.mode, - entry: path.resolve(import.meta.dirname, 'src/entries/main.ts'), - filename: 'worker.js', - }) diff --git a/scripts/build/build-package.ts b/scripts/build/build-package.ts index a4274cc30c..ecb4710645 100644 --- a/scripts/build/build-package.ts +++ b/scripts/build/build-package.ts @@ -2,6 +2,8 @@ import fs from 'node:fs/promises' import { parseArgs } from 'node:util' import ts from 'typescript' import { globSync } from 'glob' +import webpack from 'webpack' +import webpackBase from '../../webpack.base.ts' import { printLog, runMain } from '../lib/executionUtils.ts' import { modifyFile } from '../lib/filesUtils.ts' @@ -13,6 +15,9 @@ runMain(async () => { modules: { type: 'boolean', }, + bundle: { + type: 'string', + }, verbose: { type: 'boolean', default: false, @@ -33,8 +38,40 @@ runMain(async () => { verbose: values.verbose, }) } + + if (values.bundle) { + printLog('Building bundle...') + await buildBundle({ + filename: values.bundle, + verbose: values.verbose, + }) + } }) +async function buildBundle({ filename, verbose }: { filename: string; verbose: boolean }) { + await fs.rm('./bundle', { recursive: true, force: true }) + return new Promise((resolve, reject) => { + webpack( + webpackBase({ + mode: 'production', + entry: './src/entries/main.ts', + filename, + }), + (error, stats) => { + if (error) { + reject(error) + return + } + + if (verbose) { + console.log(stats!.toString({ colors: true })) + } + resolve() + } + ) + }) +} + async function buildModules({ outDir, module, verbose }: { outDir: string; module: string; verbose: boolean }) { await fs.rm(outDir, { recursive: true, force: true }) From a2998402f6ca1e953cca2fe228ac9683bb8e3040 Mon Sep 17 00:00:00 2001 From: Benoit Zugmeyer Date: Fri, 31 Oct 2025 10:59:04 +0100 Subject: [PATCH 3/7] =?UTF-8?q?=F0=9F=91=B7=20adjust=20sandbox=20build?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/dev-server.ts | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/scripts/dev-server.ts b/scripts/dev-server.ts index f08be09627..64e8706fb9 100644 --- a/scripts/dev-server.ts +++ b/scripts/dev-server.ts @@ -4,16 +4,13 @@ import HtmlWebpackPlugin from 'html-webpack-plugin' import webpack from 'webpack' import cors from 'cors' import webpackBase from '../webpack.base.ts' -import logsConfig from '../packages/logs/webpack.config.mts' -import rumSlimConfig from '../packages/rum-slim/webpack.config.mts' -import rumConfig from '../packages/rum/webpack.config.mts' -import flaggingConfig from '../packages/flagging/webpack.config.mts' -import workerConfig from '../packages/worker/webpack.config.mts' import { printLog, runMain } from './lib/executionUtils.ts' const sandboxPath = './sandbox' const port = 8080 +const PACKAGES_WITH_BUNDLE = ['rum', 'rum-slim', 'logs', 'flagging', 'worker'] + runMain(() => { const app = express() app.use(createStaticSandboxApp()) @@ -25,8 +22,19 @@ function createStaticSandboxApp(): express.Application { const app = express() app.use(cors()) app.use(express.static(sandboxPath)) - for (const config of [rumConfig, rumSlimConfig, logsConfig, flaggingConfig, workerConfig]) { - app.use(middleware(webpack(config(null, { mode: 'development' }))!)) + for (const packageName of PACKAGES_WITH_BUNDLE) { + const packagePath = `./packages/${packageName}` + app.use( + middleware( + webpack( + webpackBase({ + mode: 'development', + entry: `${packagePath}/src/entries/main.ts`, + filename: packageName === 'worker' ? 'worker.js' : `datadog-${packageName}.js`, + }) + )! + ) + ) } // Redirect suffixed files From de520ca578da073cff1ad71c3a88a9d8b1b432b2 Mon Sep 17 00:00:00 2001 From: Benoit Zugmeyer Date: Fri, 31 Oct 2025 10:59:04 +0100 Subject: [PATCH 4/7] =?UTF-8?q?=F0=9F=91=B7=20fix=20check-packages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/check-packages.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/check-packages.ts b/scripts/check-packages.ts index 499acc29e2..c4114d59e1 100644 --- a/scripts/check-packages.ts +++ b/scripts/check-packages.ts @@ -48,7 +48,7 @@ function getPackageFiles(packagePath: string): string[] { // // [1]: Quoting Lerna doc: "Lerna always uses npm to publish packages." // https://lerna.js.org/docs/features/version-and-publish#from-package - const output = command`npm pack --dry-run --json`.withCurrentWorkingDirectory(packagePath).run() + const output = command`npm pack --ignore-scripts --dry-run --json`.withCurrentWorkingDirectory(packagePath).run() const parsed: NpmPackOutput[] = JSON.parse(output) return parsed[0].files.map((file) => file.path) } From 2be9686a4bd033a2487cca166e60276f197d5e97 Mon Sep 17 00:00:00 2001 From: Benoit Zugmeyer Date: Tue, 4 Nov 2025 18:12:56 +0100 Subject: [PATCH 5/7] =?UTF-8?q?=F0=9F=94=A5=20remove=20now=20unused=20npm-?= =?UTF-8?q?run-all=20dependency?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LICENSE-3rdparty.csv | 1 - package.json | 1 - packages/flagging/package.json | 1 - yarn.lock | 152 +-------------------------------- 4 files changed, 3 insertions(+), 152 deletions(-) diff --git a/LICENSE-3rdparty.csv b/LICENSE-3rdparty.csv index b1b3cda52f..45c99de481 100644 --- a/LICENSE-3rdparty.csv +++ b/LICENSE-3rdparty.csv @@ -57,7 +57,6 @@ dev,karma-webpack,MIT,Copyright JS Foundation and other contributors dev,lerna,MIT,Copyright 2015-present Lerna Contributors dev,minimatch,ISC,Copyright (c) Isaac Z. Schlueter and Contributors dev,node-forge,BSD,Copyright (c) 2010, Digital Bazaar, Inc. -dev,npm-run-all,MIT,Copyright 2015 Toru Nagashima dev,pako,MIT,(C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin dev,prettier,MIT,Copyright James Long and contributors dev,puppeteer,Apache-2.0,Copyright 2017 Google Inc. diff --git a/package.json b/package.json index 210e3c6f09..01e21174f6 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,6 @@ "karma-webpack": "5.0.0", "lerna": "9.0.0", "minimatch": "10.0.3", - "npm-run-all": "4.1.5", "prettier": "3.6.2", "puppeteer": "24.26.0", "swc-loader": "0.2.6", diff --git a/packages/flagging/package.json b/packages/flagging/package.json index 901d299606..523f64e9fe 100644 --- a/packages/flagging/package.json +++ b/packages/flagging/package.json @@ -33,7 +33,6 @@ "access": "public" }, "devDependencies": { - "npm-run-all": "4.1.5", "webpack": "5.102.1" } } diff --git a/yarn.lock b/yarn.lock index d4f6d86bb0..323a87f7ff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -236,7 +236,6 @@ __metadata: resolution: "@datadog/browser-flagging@workspace:packages/flagging" dependencies: "@datadog/browser-core": "npm:6.22.0" - npm-run-all: "npm:4.1.5" webpack: "npm:5.102.1" peerDependencies: "@datadog/browser-rum": 6.22.0 @@ -3295,15 +3294,6 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^3.2.1": - version: 3.2.1 - resolution: "ansi-styles@npm:3.2.1" - dependencies: - color-convert: "npm:^1.9.0" - checksum: 10c0/ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b - languageName: node - linkType: hard - "ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": version: 4.3.0 resolution: "ansi-styles@npm:4.3.0" @@ -3868,7 +3858,6 @@ __metadata: karma-webpack: "npm:5.0.0" lerna: "npm:9.0.0" minimatch: "npm:10.0.3" - npm-run-all: "npm:4.1.5" prettier: "npm:3.6.2" puppeteer: "npm:24.26.0" swc-loader: "npm:0.2.6" @@ -4122,17 +4111,6 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^2.4.1": - version: 2.4.2 - resolution: "chalk@npm:2.4.2" - dependencies: - ansi-styles: "npm:^3.2.1" - escape-string-regexp: "npm:^1.0.5" - supports-color: "npm:^5.3.0" - checksum: 10c0/e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073 - languageName: node - linkType: hard - "chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.2": version: 4.1.2 resolution: "chalk@npm:4.1.2" @@ -4362,15 +4340,6 @@ __metadata: languageName: node linkType: hard -"color-convert@npm:^1.9.0": - version: 1.9.3 - resolution: "color-convert@npm:1.9.3" - dependencies: - color-name: "npm:1.1.3" - checksum: 10c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c - languageName: node - linkType: hard - "color-convert@npm:^2.0.1": version: 2.0.1 resolution: "color-convert@npm:2.0.1" @@ -4380,13 +4349,6 @@ __metadata: languageName: node linkType: hard -"color-name@npm:1.1.3": - version: 1.1.3 - resolution: "color-name@npm:1.1.3" - checksum: 10c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6 - languageName: node - linkType: hard - "color-name@npm:~1.1.4": version: 1.1.4 resolution: "color-name@npm:1.1.4" @@ -4805,19 +4767,6 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^6.0.5": - version: 6.0.6 - resolution: "cross-spawn@npm:6.0.6" - dependencies: - nice-try: "npm:^1.0.4" - path-key: "npm:^2.0.1" - semver: "npm:^5.5.0" - shebang-command: "npm:^1.2.0" - which: "npm:^1.2.9" - checksum: 10c0/bf61fb890e8635102ea9bce050515cf915ff6a50ccaa0b37a17dc82fded0fb3ed7af5478b9367b86baee19127ad86af4be51d209f64fd6638c0862dca185fe1d - languageName: node - linkType: hard - "cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.6": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" @@ -7048,13 +6997,6 @@ __metadata: languageName: node linkType: hard -"has-flag@npm:^3.0.0": - version: 3.0.0 - resolution: "has-flag@npm:3.0.0" - checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 - languageName: node - linkType: hard - "has-flag@npm:^4.0.0": version: 4.0.0 resolution: "has-flag@npm:4.0.0" @@ -9082,13 +9024,6 @@ __metadata: languageName: node linkType: hard -"memorystream@npm:^0.3.1": - version: 0.3.1 - resolution: "memorystream@npm:0.3.1" - checksum: 10c0/4bd164657711d9747ff5edb0508b2944414da3464b7fe21ac5c67cf35bba975c4b446a0124bd0f9a8be54cfc18faf92e92bd77563a20328b1ccf2ff04e9f39b9 - languageName: node - linkType: hard - "meow@npm:^8.1.2": version: 8.1.2 resolution: "meow@npm:8.1.2" @@ -9572,13 +9507,6 @@ __metadata: languageName: node linkType: hard -"nice-try@npm:^1.0.4": - version: 1.0.5 - resolution: "nice-try@npm:1.0.5" - checksum: 10c0/95568c1b73e1d0d4069a3e3061a2102d854513d37bcfda73300015b7ba4868d3b27c198d1dbbd8ebdef4112fc2ed9e895d4a0f2e1cce0bd334f2a1346dc9205f - languageName: node - linkType: hard - "no-case@npm:^3.0.4": version: 3.0.4 resolution: "no-case@npm:3.0.4" @@ -9824,27 +9752,6 @@ __metadata: languageName: node linkType: hard -"npm-run-all@npm:4.1.5": - version: 4.1.5 - resolution: "npm-run-all@npm:4.1.5" - dependencies: - ansi-styles: "npm:^3.2.1" - chalk: "npm:^2.4.1" - cross-spawn: "npm:^6.0.5" - memorystream: "npm:^0.3.1" - minimatch: "npm:^3.0.4" - pidtree: "npm:^0.3.0" - read-pkg: "npm:^3.0.0" - shell-quote: "npm:^1.6.1" - string.prototype.padend: "npm:^3.0.0" - bin: - npm-run-all: bin/npm-run-all/index.js - run-p: bin/run-p/index.js - run-s: bin/run-s/index.js - checksum: 10c0/736ee39bd35454d3efaa4a2e53eba6c523e2e17fba21a18edcce6b221f5cab62000bef16bb6ae8aff9e615831e6b0eb25ab51d52d60e6fa6f4ea880e4c6d31f4 - languageName: node - linkType: hard - "npm-run-path@npm:^4.0.1": version: 4.0.1 resolution: "npm-run-path@npm:4.0.1" @@ -10517,13 +10424,6 @@ __metadata: languageName: node linkType: hard -"path-key@npm:^2.0.1": - version: 2.0.1 - resolution: "path-key@npm:2.0.1" - checksum: 10c0/dd2044f029a8e58ac31d2bf34c34b93c3095c1481942960e84dd2faa95bbb71b9b762a106aead0646695330936414b31ca0bd862bf488a937ad17c8c5d73b32b - languageName: node - linkType: hard - "path-key@npm:^3.0.0, path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" @@ -10630,15 +10530,6 @@ __metadata: languageName: node linkType: hard -"pidtree@npm:^0.3.0": - version: 0.3.1 - resolution: "pidtree@npm:0.3.1" - bin: - pidtree: bin/pidtree.js - checksum: 10c0/cd69b0182f749f45ab48584e3442c48c5dc4512502c18d5b0147a33b042c41a4db4269b9ce2f7c48f11833ee5e79d81f5ebc6f7bf8372d4ea55726f60dc505a1 - languageName: node - linkType: hard - "pify@npm:5.0.0": version: 5.0.0 resolution: "pify@npm:5.0.0" @@ -11798,7 +11689,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.5.0, semver@npm:^5.6.0": +"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.6.0": version: 5.7.2 resolution: "semver@npm:5.7.2" bin: @@ -11996,15 +11887,6 @@ __metadata: languageName: node linkType: hard -"shebang-command@npm:^1.2.0": - version: 1.2.0 - resolution: "shebang-command@npm:1.2.0" - dependencies: - shebang-regex: "npm:^1.0.0" - checksum: 10c0/7b20dbf04112c456b7fc258622dafd566553184ac9b6938dd30b943b065b21dabd3776460df534cc02480db5e1b6aec44700d985153a3da46e7db7f9bd21326d - languageName: node - linkType: hard - "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" @@ -12014,13 +11896,6 @@ __metadata: languageName: node linkType: hard -"shebang-regex@npm:^1.0.0": - version: 1.0.0 - resolution: "shebang-regex@npm:1.0.0" - checksum: 10c0/9abc45dee35f554ae9453098a13fdc2f1730e525a5eb33c51f096cc31f6f10a4b38074c1ebf354ae7bffa7229506083844008dfc3bb7818228568c0b2dc1fff2 - languageName: node - linkType: hard - "shebang-regex@npm:^3.0.0": version: 3.0.0 resolution: "shebang-regex@npm:3.0.0" @@ -12028,7 +11903,7 @@ __metadata: languageName: node linkType: hard -"shell-quote@npm:^1.6.1, shell-quote@npm:^1.8.3": +"shell-quote@npm:^1.8.3": version: 1.8.3 resolution: "shell-quote@npm:1.8.3" checksum: 10c0/bee87c34e1e986cfb4c30846b8e6327d18874f10b535699866f368ade11ea4ee45433d97bf5eada22c4320c27df79c3a6a7eb1bf3ecfc47f2c997d9e5e2672fd @@ -12458,18 +12333,6 @@ __metadata: languageName: node linkType: hard -"string.prototype.padend@npm:^3.0.0": - version: 3.1.6 - resolution: "string.prototype.padend@npm:3.1.6" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.2" - es-object-atoms: "npm:^1.0.0" - checksum: 10c0/8f2c8c1f3db1efcdc210668c80c87f2cea1253d6029ff296a172b5e13edc9adebeed4942d023de8d31f9b13b69f3f5d73de7141959b1f09817fba5f527e83be1 - languageName: node - linkType: hard - "string.prototype.trim@npm:^1.2.10": version: 1.2.10 resolution: "string.prototype.trim@npm:1.2.10" @@ -12597,15 +12460,6 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^5.3.0": - version: 5.5.0 - resolution: "supports-color@npm:5.5.0" - dependencies: - has-flag: "npm:^3.0.0" - checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 - languageName: node - linkType: hard - "supports-color@npm:^7.1.0": version: 7.2.0 resolution: "supports-color@npm:7.2.0" @@ -13828,7 +13682,7 @@ __metadata: languageName: node linkType: hard -"which@npm:^1.2.1, which@npm:^1.2.9": +"which@npm:^1.2.1": version: 1.3.1 resolution: "which@npm:1.3.1" dependencies: From 3b108a1bff4ea20ea6c6cfffbf31d50c612a93b2 Mon Sep 17 00:00:00 2001 From: Benoit Zugmeyer Date: Thu, 6 Nov 2025 17:10:16 +0100 Subject: [PATCH 6/7] =?UTF-8?q?=F0=9F=91=8C=20revamp=20build-package=20scr?= =?UTF-8?q?ipt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/build/build-package.ts | 91 ++++++++++++++++++++-------------- 1 file changed, 53 insertions(+), 38 deletions(-) diff --git a/scripts/build/build-package.ts b/scripts/build/build-package.ts index ecb4710645..a45707eb7b 100644 --- a/scripts/build/build-package.ts +++ b/scripts/build/build-package.ts @@ -46,6 +46,8 @@ runMain(async () => { verbose: values.verbose, }) } + + printLog('Done.') }) async function buildBundle({ filename, verbose }: { filename: string; verbose: boolean }) { @@ -78,51 +80,30 @@ async function buildModules({ outDir, module, verbose }: { outDir: string; modul // TODO: in the future, consider building packages with something else than typescript (ex: // rspack, tsdown...) - const parsed = ts.parseJsonConfigFileContent( - { - extends: '../../tsconfig.base.json', - compilerOptions: { - baseUrl: '.', - declaration: true, - allowJs: true, - module, - rootDir: './src/', - outDir, - }, - include: ['./src'], - exclude: ['./src/**/*.spec.*', './src/**/*.specHelper.*'], + const diagnostics = buildWithTypeScript({ + extends: '../../tsconfig.base.json', + compilerOptions: { + baseUrl: '.', + declaration: true, + allowJs: true, + module, + rootDir: './src/', + outDir, }, - ts.sys, - process.cwd(), - undefined, - 'tsconfig.json' // just used in messages - ) - - const host = ts.createCompilerHost(parsed.options) - const program = ts.createProgram({ - rootNames: parsed.fileNames, - options: parsed.options, - host, + include: ['./src'], + exclude: ['./src/**/*.spec.*', './src/**/*.specHelper.*'], }) - const emitResult = program.emit() - const diagnostics = ts.getPreEmitDiagnostics(program).concat(emitResult.diagnostics) - if (diagnostics.length) { - const formatHost: ts.FormatDiagnosticsHost = { - getCanonicalFileName: (f) => f, - // eslint-disable-next-line @typescript-eslint/unbound-method - getCurrentDirectory: ts.sys.getCurrentDirectory, - getNewLine: () => ts.sys.newLine, - } - console.error(ts.formatDiagnosticsWithColorAndContext(diagnostics, formatHost)) + printTypeScriptDiagnostics(diagnostics) + throw new Error('Failed to build package due to TypeScript errors') } - if (emitResult.emitSkipped) { - throw new Error('Failed to build package') - } + await replaceBuildEnvInDirectory(outDir, { verbose }) +} - for (const path of globSync('**/*.js', { cwd: outDir, absolute: true })) { +async function replaceBuildEnvInDirectory(dir: string, { verbose }: { verbose: boolean }) { + for (const path of globSync('**/*.js', { cwd: dir, absolute: true })) { if (await modifyFile(path, (content: string) => replaceBuildEnv(content))) { if (verbose) { printLog(`Replaced BuildEnv in ${path}`) @@ -137,3 +118,37 @@ async function buildModules({ outDir, module, verbose }: { outDir: string; modul ) } } + +function buildWithTypeScript(configuration: { [key: string]: unknown }) { + const parsedConfiguration = ts.parseJsonConfigFileContent( + configuration, + ts.sys, + process.cwd(), + undefined, + 'tsconfig.json' // just used in messages + ) + + const host = ts.createCompilerHost(parsedConfiguration.options) + const program = ts.createProgram({ + rootNames: parsedConfiguration.fileNames, + options: parsedConfiguration.options, + host, + }) + + const emitResult = program.emit() + if (emitResult.emitSkipped) { + throw new Error('No files were emitted') + } + + return [...ts.getPreEmitDiagnostics(program), ...emitResult.diagnostics] +} + +function printTypeScriptDiagnostics(diagnostics: ts.Diagnostic[]) { + const formatHost: ts.FormatDiagnosticsHost = { + getCanonicalFileName: (f) => f, + // eslint-disable-next-line @typescript-eslint/unbound-method + getCurrentDirectory: ts.sys.getCurrentDirectory, + getNewLine: () => ts.sys.newLine, + } + console.error(ts.formatDiagnosticsWithColorAndContext(diagnostics, formatHost)) +} From 872295479fca1b0bc31b0cde75807817c3a40ac6 Mon Sep 17 00:00:00 2001 From: Benoit Zugmeyer Date: Thu, 6 Nov 2025 18:07:04 +0100 Subject: [PATCH 7/7] adjust build-package script to use the native globSync --- scripts/build/build-package.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/scripts/build/build-package.ts b/scripts/build/build-package.ts index a45707eb7b..35de4985c5 100644 --- a/scripts/build/build-package.ts +++ b/scripts/build/build-package.ts @@ -1,7 +1,8 @@ import fs from 'node:fs/promises' import { parseArgs } from 'node:util' +import path from 'node:path' +import { globSync } from 'node:fs' import ts from 'typescript' -import { globSync } from 'glob' import webpack from 'webpack' import webpackBase from '../../webpack.base.ts' @@ -103,10 +104,11 @@ async function buildModules({ outDir, module, verbose }: { outDir: string; modul } async function replaceBuildEnvInDirectory(dir: string, { verbose }: { verbose: boolean }) { - for (const path of globSync('**/*.js', { cwd: dir, absolute: true })) { - if (await modifyFile(path, (content: string) => replaceBuildEnv(content))) { + for (const relativePath of globSync('**/*.js', { cwd: dir })) { + const absolutePath = path.resolve(dir, relativePath) + if (await modifyFile(absolutePath, (content: string) => replaceBuildEnv(content))) { if (verbose) { - printLog(`Replaced BuildEnv in ${path}`) + printLog(`Replaced BuildEnv in ${absolutePath}`) } } }