diff --git a/packages/runtime-utils/package.json b/packages/runtime-utils/package.json index c9da00e7..7dc623fb 100644 --- a/packages/runtime-utils/package.json +++ b/packages/runtime-utils/package.json @@ -6,9 +6,25 @@ "engines": { "node": "^18.14.0 || >=20" }, - "main": "./dist/main.js", - "exports": "./dist/main.js", + "main": "./dist/main.cjs", + "module": "./dist/main.js", "types": "./dist/main.d.ts", + "exports": { + ".": { + "require": { + "types": "./dist/main.d.cts", + "default": "./dist/main.cjs" + }, + "import": { + "types": "./dist/main.d.ts", + "default": "./dist/main.js" + }, + "default": { + "types": "./dist/main.d.ts", + "default": "./dist/main.js" + } + } + }, "files": [ "dist/**/*" ], diff --git a/packages/runtime-utils/tsup.config.ts b/packages/runtime-utils/tsup.config.ts index c3b8320f..5d493d3a 100644 --- a/packages/runtime-utils/tsup.config.ts +++ b/packages/runtime-utils/tsup.config.ts @@ -7,7 +7,10 @@ export default defineConfig([ clean: true, entry: ['src/main.ts'], outDir: 'dist', - format: ['esm'], + // We build both CJS and ESM because @netlify/blobs is dual-format and depends on this package. + // When @netlify/blobs becomes ESM-only, we can remove CJS here and go ESM-only too. + // See: https://github.com/netlify/primitives/issues/437 + format: ['cjs', 'esm'], dts: true, splitting: false, watch: argv.includes('--watch'),