From 3352b76b758db41ca4e908dbcc00689b7a6f1f81 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Wed, 23 Apr 2025 22:11:18 +0200 Subject: [PATCH 1/2] build: Use rolldown for bundles --- dev-packages/rollup-utils/bundleHelpers.mjs | 9 +- package.json | 1 + packages/browser/package.json | 4 +- packages/replay-canvas/package.json | 2 +- packages/replay-internal/package.json | 2 +- yarn.lock | 144 +++++++++++++++++++- 6 files changed, 154 insertions(+), 8 deletions(-) diff --git a/dev-packages/rollup-utils/bundleHelpers.mjs b/dev-packages/rollup-utils/bundleHelpers.mjs index f80b0b7c2e50..c51af1411f3c 100644 --- a/dev-packages/rollup-utils/bundleHelpers.mjs +++ b/dev-packages/rollup-utils/bundleHelpers.mjs @@ -25,6 +25,7 @@ const BUNDLE_VARIANTS = ['.js', '.min.js', '.debug.min.js']; export function makeBaseBundleConfig(options) { const { bundleType, entrypoints, licenseTitle, outputFileBase, packageSpecificConfig, sucrase } = options; + const rolldown = process.argv[1]?.endsWith('rolldown'); const nodeResolvePlugin = makeNodeResolvePlugin(); const sucrasePlugin = makeSucrasePlugin({}, sucrase); @@ -133,11 +134,13 @@ export function makeBaseBundleConfig(options) { entryFileNames: outputFileBase, dir: 'build', sourcemap: true, - strict: false, + ...(rolldown ? {} : {strict: false}), esModule: false, }, - plugins: [sucrasePlugin, nodeResolvePlugin, cleanupPlugin, licensePlugin], - treeshake: 'smallest', + plugins: rolldown + ? [cleanupPlugin, licensePlugin] + : [sucrasePlugin, nodeResolvePlugin, cleanupPlugin, licensePlugin], + treeshake: rolldown ? true : 'smallest', }; const bundleTypeConfigMap = { diff --git a/package.json b/package.json index a3fb0123a5ae..72a26793bdc8 100644 --- a/package.json +++ b/package.json @@ -125,6 +125,7 @@ "prettier": "^3.1.1", "rimraf": "^5.0.10", "rollup": "^4.35.0", + "rolldown": "^1.0.0-beta.8", "rollup-plugin-cleanup": "^3.2.1", "rollup-plugin-license": "^3.3.1", "size-limit": "~11.1.6", diff --git a/packages/browser/package.json b/packages/browser/package.json index eff8db027d51..9de2f3014136 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -52,14 +52,14 @@ "scripts": { "build": "run-p build:transpile build:bundle build:types", "build:dev": "run-p build:transpile build:types", - "build:bundle": "rollup -c rollup.bundle.config.mjs", + "build:bundle": "rolldown -c rollup.bundle.config.mjs", "build:transpile": "rollup -c rollup.npm.config.mjs", "build:types": "run-s build:types:core build:types:downlevel", "build:types:core": "tsc -p tsconfig.types.json", "build:types:downlevel": "yarn downlevel-dts build/npm/types build/npm/types-ts3.8 --to ts3.8", "build:watch": "run-p build:transpile:watch build:bundle:watch build:types:watch", "build:dev:watch": "run-p build:transpile:watch build:types:watch", - "build:bundle:watch": "rollup -c rollup.bundle.config.mjs --watch", + "build:bundle:watch": "rolldown -c rollup.bundle.config.mjs --watch", "build:transpile:watch": "rollup -c rollup.npm.config.mjs --watch", "build:types:watch": "tsc -p tsconfig.types.json --watch", "build:tarball": "npm pack", diff --git a/packages/replay-canvas/package.json b/packages/replay-canvas/package.json index 376330935d09..061465294b8b 100644 --- a/packages/replay-canvas/package.json +++ b/packages/replay-canvas/package.json @@ -32,7 +32,7 @@ "scripts": { "build": "run-p build:transpile build:types build:bundle", "build:transpile": "rollup -c rollup.npm.config.mjs", - "build:bundle": "rollup -c rollup.bundle.config.mjs", + "build:bundle": "rolldown -c rollup.bundle.config.mjs", "build:dev": "run-p build:transpile build:types", "build:types": "run-s build:types:core build:types:downlevel", "build:types:core": "tsc -p tsconfig.types.json", diff --git a/packages/replay-internal/package.json b/packages/replay-internal/package.json index 2f28304d2f00..a4b032716a19 100644 --- a/packages/replay-internal/package.json +++ b/packages/replay-internal/package.json @@ -35,7 +35,7 @@ "scripts": { "build": "run-p build:transpile build:types build:bundle", "build:transpile": "rollup -c rollup.npm.config.mjs", - "build:bundle": "rollup -c rollup.bundle.config.mjs", + "build:bundle": "rolldown -c rollup.bundle.config.mjs", "build:dev": "run-p build:transpile build:types", "build:types": "run-s build:types:core build:types:downlevel", "build:types:core": "tsc -p tsconfig.types.json", diff --git a/yarn.lock b/yarn.lock index 1dc296fdb9c5..14e77bb6f1c4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2932,6 +2932,28 @@ lodash "^4.17.21" resolve "^1.20.0" +"@emnapi/core@^1.4.0": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.4.3.tgz#9ac52d2d5aea958f67e52c40a065f51de59b77d6" + integrity sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g== + dependencies: + "@emnapi/wasi-threads" "1.0.2" + tslib "^2.4.0" + +"@emnapi/runtime@^1.4.0": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.4.3.tgz#c0564665c80dc81c448adac23f9dfbed6c838f7d" + integrity sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ== + dependencies: + tslib "^2.4.0" + +"@emnapi/wasi-threads@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz#977f44f844eac7d6c138a415a123818c655f874c" + integrity sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA== + dependencies: + tslib "^2.4.0" + "@esbuild-plugins/node-globals-polyfill@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.2.3.tgz#0e4497a2b53c9e9485e149bc92ddb228438d6bcf" @@ -4604,6 +4626,15 @@ dependencies: sparse-bitfield "^3.0.3" +"@napi-rs/wasm-runtime@^0.2.4": + version "0.2.9" + resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.9.tgz#7278122cf94f3b36d8170a8eee7d85356dfa6a96" + integrity sha512-OKRBiajrrxB9ATokgEQoG87Z25c67pCpYcCwmXYX8PBftC9pBfN18gnm/fh1wurSLEKIAt+QRFLFCQISrb66Jg== + dependencies: + "@emnapi/core" "^1.4.0" + "@emnapi/runtime" "^1.4.0" + "@tybys/wasm-util" "^0.9.0" + "@nestjs/common@11.0.16": version "11.0.16" resolved "https://registry.yarnpkg.com/@nestjs/common/-/common-11.0.16.tgz#b6550ac2998e9991f24a99563a93475542885ba7" @@ -5737,6 +5768,11 @@ dependencies: "@opentelemetry/core" "^1.1.0" +"@oxc-project/types@0.65.0": + version "0.65.0" + resolved "https://registry.yarnpkg.com/@oxc-project/types/-/types-0.65.0.tgz#ba40064b6ba43fddee44f0d8518e7929a7dffb05" + integrity sha512-7MpMzyXCcwxrTxJ4L0siy63Ds/LA8LAM4szumTFiynxTJkfrIZEV4PyR4Th0CqFZQ+oNi8WvW3Dr1MLy7o9qPQ== + "@parcel/watcher-android-arm64@2.5.0": version "2.5.0" resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz#e32d3dda6647791ee930556aee206fcd5ea0fb7a" @@ -6120,6 +6156,68 @@ dependencies: web-streams-polyfill "^3.1.1" +"@rolldown/binding-darwin-arm64@1.0.0-beta.8": + version "1.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-beta.8.tgz#9793e0b95360cddaa89efb43417fc2b2e4604008" + integrity sha512-4cwzBnUvPUVdjUMo9uFkcTvj+Z6IXaN/YJSz1RuI/DG5+vlQ9wYfKeDkvb1nsrhi4ZJ99OInOw1Vh/n2ReX8rA== + +"@rolldown/binding-darwin-x64@1.0.0-beta.8": + version "1.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-beta.8.tgz#f67f3345203161b15b9d59a2875ee66f46c2f6aa" + integrity sha512-BYI7UXc0UqjdpmEyNpxulv8cYbTdL7zLzIr6GDdIvHH7fe/pKTmC9GpvkpF/j2cyP0SUKTd6ExX7nFDNDqKMBw== + +"@rolldown/binding-freebsd-x64@1.0.0-beta.8": + version "1.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-beta.8.tgz#adcabf00d9b28a68c414081927af20e0c4c7af8f" + integrity sha512-KsX/nuGiuNugIeBelN7M7c/8kzcAW6IfH080z9IrIrlCaGa+xwjqMAf7JuYLZo82uokFq8nql0YpQIazFwFR0Q== + +"@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.8": + version "1.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-beta.8.tgz#75d43988d46a432592034e8516c645565c7ed2b9" + integrity sha512-IzmoAB9J9iOnoC2Nb6AlyIPPULcbLb0qtJDq21+95u/qiE2GYtI5M4aNudbAIdyv0MU4SAdhkG2sXjMo79H/Zg== + +"@rolldown/binding-linux-arm64-gnu@1.0.0-beta.8": + version "1.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-beta.8.tgz#c03da3b644045fc0c4de8f399293dad3b3e7b073" + integrity sha512-nGtOvVKMywOlqoFiMJgILgCpdVcPe0psH1oCWtieMyFFU/v2h2ucjstAEeCOe+JfMVVA7OpdNoWKc54Y1V7gGw== + +"@rolldown/binding-linux-arm64-musl@1.0.0-beta.8": + version "1.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-beta.8.tgz#49e7dfe0c31780fc19ba6aebbcbdf4fb435c903b" + integrity sha512-paTZphpweKHNwlIu0JTAJCddn/psFzNUaKeGEY4vTQEqDcewKp9SsxN7240ao1eqTYy6TMFJiX6Ej2ym93MkSQ== + +"@rolldown/binding-linux-x64-gnu@1.0.0-beta.8": + version "1.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-beta.8.tgz#2fcbc7e4242eb3deaaa243d6221aeb98b2d5ecaa" + integrity sha512-Pdt5iaG/wlWTvEz1lZ3kDkmVXM7DxQXPFZUX/UjDnUyxf4vSgxszbSx1tiNdU0D9v1IISgBapANSwJOGtF1lWw== + +"@rolldown/binding-linux-x64-musl@1.0.0-beta.8": + version "1.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-beta.8.tgz#afa791a210f453a1a9da3f23ab73e5091984f18b" + integrity sha512-8LoLgKq+Wb030p+tzw0JrOrbJrR2wmqfARX1CHIhge8LBoxd2lfHtWfkg23qRa1S8So/nBZBhrQsg2kXUkpwxw== + +"@rolldown/binding-wasm32-wasi@1.0.0-beta.8": + version "1.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-beta.8.tgz#27c1df63b82d8a44f3ca28e4fcad7d93bf927fb0" + integrity sha512-+2y9Omf9tZRR44Y4EYqm3/Zq2f4Tv+Gh8NsExFWM6WpQZI3HyIB07lrTNQfOJgKSsAiUisnbjiPVTkiH5miy1w== + dependencies: + "@napi-rs/wasm-runtime" "^0.2.4" + +"@rolldown/binding-win32-arm64-msvc@1.0.0-beta.8": + version "1.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-beta.8.tgz#df46882718459c816463d4724b0aa96dd6aa3e0b" + integrity sha512-bt5AOleb2yp+Br9Yzew+jbSEGjLoqGwknH0xhK8QkhXKx31sJLseaP7nFXr6JaEbmL4DVmAVgrOcyLzLbR6+Mw== + +"@rolldown/binding-win32-ia32-msvc@1.0.0-beta.8": + version "1.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.0.0-beta.8.tgz#c1b6c6326e8a89c0c5d914330ef911fed02f20bd" + integrity sha512-Fa1OH6eUWtjBNNkKiSSq1fHVMuiqQ+Bi9uMNJz7gBFgjNiAB9k9rQr0j9eF1k4H6lXFkuoN5P7pXty6aBh93Cw== + +"@rolldown/binding-win32-x64-msvc@1.0.0-beta.8": + version "1.0.0-beta.8" + resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-beta.8.tgz#7003571b44b20a0e83ecb5134e6ec34b3a2fb0ee" + integrity sha512-hR81d84Poe6oIxaz4PnWBLVF0VuqtRfISIyXQAgk2etu2udrKnWKr3A+xqXe9ELjbLlRYGvEm2dlw/cldO9Kxg== + "@rollup/plugin-alias@^5.0.0", "@rollup/plugin-alias@^5.1.0": version "5.1.0" resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-5.1.0.tgz#99a94accc4ff9a3483be5baeedd5d7da3b597e93" @@ -7447,6 +7545,13 @@ "@tufjs/canonical-json" "1.0.0" minimatch "^9.0.0" +"@tybys/wasm-util@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.9.0.tgz#3e75eb00604c8d6db470bf18c37b7d984a0e3355" + integrity sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw== + dependencies: + tslib "^2.4.0" + "@types/accepts@^1.3.5": version "1.3.5" resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" @@ -8538,6 +8643,11 @@ hookable "^5.5.3" unhead "1.11.6" +"@valibot/to-json-schema@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@valibot/to-json-schema/-/to-json-schema-1.0.0.tgz#69ce115d3b2c3d924a784f36247aff1949ad4daf" + integrity sha512-/9crJgPptVsGCL6X+JPDQyaJwkalSZ/52WuF8DiRUxJgcmpNdzYRfZ+gqMEP8W3CTVfuMWPqqvIgfwJ97f9Etw== + "@vercel/nft@^0.26.5": version "0.26.5" resolved "https://registry.yarnpkg.com/@vercel/nft/-/nft-0.26.5.tgz#f21e40576b76446851b6cbff79f39a72dab4d6b2" @@ -9565,6 +9675,11 @@ ansicolors@~0.2.1: resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz#be089599097b74a5c9c4a84a0cdbcdb62bd87aef" integrity sha1-vgiVmQl7dKXJxKhKDNvNtivYeu8= +ansis@^3.17.0: + version "3.17.0" + resolved "https://registry.yarnpkg.com/ansis/-/ansis-3.17.0.tgz#fa8d9c2a93fe7d1177e0c17f9eeb562a58a832d7" + integrity sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg== + any-promise@^1.0.0, any-promise@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" @@ -25446,6 +25561,29 @@ roarr@^7.0.4: safe-stable-stringify "^2.4.1" semver-compare "^1.0.0" +rolldown@^1.0.0-beta.8: + version "1.0.0-beta.8" + resolved "https://registry.yarnpkg.com/rolldown/-/rolldown-1.0.0-beta.8.tgz#be4f19988259ea7dda58a1ef8eeddebafb1fcfc8" + integrity sha512-lwctoQjonOosxGhVbuoIARk8TNO2roqAh/ArhNmT/e/INMN+fzO0++yCypVZLZczOdgTARrYmsOEnTgMOt9sSg== + dependencies: + "@oxc-project/types" "0.65.0" + "@valibot/to-json-schema" "1.0.0" + ansis "^3.17.0" + valibot "1.0.0" + optionalDependencies: + "@rolldown/binding-darwin-arm64" "1.0.0-beta.8" + "@rolldown/binding-darwin-x64" "1.0.0-beta.8" + "@rolldown/binding-freebsd-x64" "1.0.0-beta.8" + "@rolldown/binding-linux-arm-gnueabihf" "1.0.0-beta.8" + "@rolldown/binding-linux-arm64-gnu" "1.0.0-beta.8" + "@rolldown/binding-linux-arm64-musl" "1.0.0-beta.8" + "@rolldown/binding-linux-x64-gnu" "1.0.0-beta.8" + "@rolldown/binding-linux-x64-musl" "1.0.0-beta.8" + "@rolldown/binding-wasm32-wasi" "1.0.0-beta.8" + "@rolldown/binding-win32-arm64-msvc" "1.0.0-beta.8" + "@rolldown/binding-win32-ia32-msvc" "1.0.0-beta.8" + "@rolldown/binding-win32-x64-msvc" "1.0.0-beta.8" + rollup-plugin-cleanup@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/rollup-plugin-cleanup/-/rollup-plugin-cleanup-3.2.1.tgz#8cbc92ecf58babd7c210051929797f137bbf777c" @@ -27080,7 +27218,6 @@ stylus@0.59.0, stylus@^0.59.0: sucrase@^3.27.0, sucrase@^3.35.0, sucrase@getsentry/sucrase#es2020-polyfills: version "3.36.0" - uid fd682f6129e507c00bb4e6319cc5d6b767e36061 resolved "https://codeload.github.com/getsentry/sucrase/tar.gz/fd682f6129e507c00bb4e6319cc5d6b767e36061" dependencies: "@jridgewell/gen-mapping" "^0.3.2" @@ -28743,6 +28880,11 @@ v8-compile-cache@2.3.0, v8-compile-cache@^2.0.3, v8-compile-cache@^2.3.0: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== +valibot@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/valibot/-/valibot-1.0.0.tgz#1f82514296abcd23d0ae4280088ba85f8651c564" + integrity sha512-1Hc0ihzWxBar6NGeZv7fPLY0QuxFMyxwYR2sF1Blu7Wq7EnremwY2W02tit2ij2VJT8HcSkHAQqmFfl77f73Yw== + valibot@^0.41.0: version "0.41.0" resolved "https://registry.yarnpkg.com/valibot/-/valibot-0.41.0.tgz#5c2efd49c078e455f7862379365f6036f3cd9f96" From 9e308371c7fdcdad40cc000b39557ec615088574 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Wed, 23 Apr 2025 22:41:22 +0200 Subject: [PATCH 2/2] Try and improve tree shaking --- dev-packages/rollup-utils/bundleHelpers.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-packages/rollup-utils/bundleHelpers.mjs b/dev-packages/rollup-utils/bundleHelpers.mjs index c51af1411f3c..438492860414 100644 --- a/dev-packages/rollup-utils/bundleHelpers.mjs +++ b/dev-packages/rollup-utils/bundleHelpers.mjs @@ -140,7 +140,7 @@ export function makeBaseBundleConfig(options) { plugins: rolldown ? [cleanupPlugin, licensePlugin] : [sucrasePlugin, nodeResolvePlugin, cleanupPlugin, licensePlugin], - treeshake: rolldown ? true : 'smallest', + treeshake: rolldown ? { moduleSideEffects:false } : 'smallest', }; const bundleTypeConfigMap = {