From 0dd60e2a3924bbc116e020d6854884e1d61607ea Mon Sep 17 00:00:00 2001 From: Danila Poyarkov Date: Mon, 31 Aug 2026 13:33:38 +0300 Subject: [PATCH] fix(release): strip source conditions from publish manifests --- tools/release-packages/src/publish-dirs.ts | 13 +++++++++++++ tools/release-packages/tests/publish-dirs.test.ts | 4 ++++ 2 files changed, 17 insertions(+) diff --git a/tools/release-packages/src/publish-dirs.ts b/tools/release-packages/src/publish-dirs.ts index 5d2996da8..8bb52422d 100644 --- a/tools/release-packages/src/publish-dirs.ts +++ b/tools/release-packages/src/publish-dirs.ts @@ -62,8 +62,21 @@ async function copyRecursive(from: string, to: string): Promise { await copyFile(from, to) } +function removeUnpublishedConditions(value: unknown): void { + if (!value || typeof value !== 'object') return + if (Array.isArray(value)) { + for (const item of value) removeUnpublishedConditions(item) + return + } + const record = value as Record + delete record.bun + for (const child of Object.values(record)) removeUnpublishedConditions(child) +} + export function publishPackageJSON(source: PackageJSON, coreVersion: string): PackageJSON { const json = structuredClone(source) + removeUnpublishedConditions(json.exports) + removeUnpublishedConditions(json.imports) for (const field of PACKAGE_FIELDS) { const dependencies = json[field] diff --git a/tools/release-packages/tests/publish-dirs.test.ts b/tools/release-packages/tests/publish-dirs.test.ts index ccf314a33..03439facb 100644 --- a/tools/release-packages/tests/publish-dirs.test.ts +++ b/tools/release-packages/tests/publish-dirs.test.ts @@ -21,6 +21,7 @@ async function fixtureRoot() { version: '1.0.0', scripts: { build: 'tsdown' }, dependencies: { '@open-pencil/core': 'workspace:*', zod: '^4.0.0' }, + exports: { '.': { bun: './src/index.ts', import: './dist/index.js' } }, devDependencies: { typescript: '^5.0.0' }, publishConfig: { access: 'public', main: './dist/index.js', types: './dist/index.d.ts' } }, @@ -38,6 +39,7 @@ describe('publishPackageJSON', () => { name: '@open-pencil/example', scripts: { build: 'tsdown' }, dependencies: { '@open-pencil/core': 'workspace:*', zod: '^4.0.0' }, + exports: { '.': { bun: './src/index.ts', import: './dist/index.js' } }, devDependencies: { typescript: '^5.0.0' }, publishConfig: { access: 'public', main: './dist/index.js' } }, @@ -47,6 +49,7 @@ describe('publishPackageJSON', () => { expect(json).toEqual({ name: '@open-pencil/example', dependencies: { '@open-pencil/core': '^0.13.2', zod: '^4.0.0' }, + exports: { '.': { import: './dist/index.js' } }, main: './dist/index.js' }) }) @@ -86,6 +89,7 @@ describe('preparePublishDirectories', () => { name: '@open-pencil/example', version: '1.0.0', dependencies: { '@open-pencil/core': '^0.13.2', zod: '^4.0.0' }, + exports: { '.': { import: './dist/index.js' } }, main: './dist/index.js', types: './dist/index.d.ts' })