From ac6a3bd29c80b0e5b1cd3c87e2ff1be8010e9fea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isaac=20Rold=C3=A1n?= Date: Thu, 2 Apr 2026 12:58:55 +0200 Subject: [PATCH] fix: regenerate oclif manifests for nightly packaging Co-authored-by: Claude Code --- packages/app/package.json | 2 +- packages/cli/package.json | 2 +- packages/cli/src/cli/repo-health.test.ts | 29 +++++++++++++++++++++++ packages/create-app/package.json | 2 +- packages/plugin-cloudflare/package.json | 2 +- packages/plugin-did-you-mean/package.json | 2 +- packages/theme/package.json | 2 +- 7 files changed, 35 insertions(+), 6 deletions(-) diff --git a/packages/app/package.json b/packages/app/package.json index 8bab494f429..6d52fa3086e 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -37,7 +37,7 @@ "clean": "nx clean", "lint": "nx lint", "lint:fix": "nx lint:fix", - "prepack": "NODE_ENV=production pnpm nx build && cp ../../README.md README.md", + "prepack": "NODE_ENV=production pnpm nx build && pnpm oclif manifest && cp ../../README.md README.md", "vitest": "vitest", "type-check": "nx type-check" }, diff --git a/packages/cli/package.json b/packages/cli/package.json index aa983a8566f..8e4eaf2fdd2 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -47,7 +47,7 @@ "clean": "nx clean", "lint": "nx lint", "lint:fix": "nx lint:fix", - "prepack": "NODE_ENV=production node ../../bin/update-bugsnag cli && cp ../../README.md README.md", + "prepack": "NODE_ENV=production node ../../bin/update-bugsnag cli && pnpm oclif manifest && cp ../../README.md README.md", "vitest": "vitest", "type-check": "nx type-check" }, diff --git a/packages/cli/src/cli/repo-health.test.ts b/packages/cli/src/cli/repo-health.test.ts index 7bfe2651db3..4f77f59f246 100644 --- a/packages/cli/src/cli/repo-health.test.ts +++ b/packages/cli/src/cli/repo-health.test.ts @@ -109,3 +109,32 @@ describe('Node dependency version sync', () => { expect(different, errorMessage).toHaveLength(0) }) }) + +describe('oclif manifest packaging', () => { + test('packages that ship oclif.manifest.json regenerate it in prepack', async () => { + const packageJsonPaths = await glob('packages/*/package.json', {cwd: repoRoot, absolute: true}) + + const missingManifestRefresh: string[] = [] + + for (const packageJsonPath of packageJsonPaths) { + const packageJson = JSON.parse(await fs.readFile(packageJsonPath, 'utf-8')) as { + files?: string[] + scripts?: {prepack?: string} + } + + if (!packageJson.files?.includes('/oclif.manifest.json')) continue + if (!packageJson.scripts?.prepack?.includes('pnpm oclif manifest')) { + missingManifestRefresh.push(path.relative(repoRoot, packageJsonPath)) + } + } + + expect( + missingManifestRefresh, + [ + 'The following packages publish oclif.manifest.json without regenerating it in prepack:\n', + ...missingManifestRefresh.map((packageJsonPath) => ` - ${packageJsonPath}\n`), + '\nAdd `pnpm oclif manifest` to the package prepack script so snapshot/nightly versions do not ship stale manifests.', + ].join(''), + ).toHaveLength(0) + }) +}) diff --git a/packages/create-app/package.json b/packages/create-app/package.json index c8b20e27d08..94d3c60423a 100644 --- a/packages/create-app/package.json +++ b/packages/create-app/package.json @@ -45,7 +45,7 @@ "clean": "nx clean", "lint": "nx lint", "lint:fix": "nx lint:fix", - "prepack": "NODE_ENV=production node ../../bin/update-bugsnag create-app && cp ../../README.md README.md", + "prepack": "NODE_ENV=production node ../../bin/update-bugsnag create-app && pnpm oclif manifest && cp ../../README.md README.md", "vitest": "vitest", "type-check": "nx type-check" }, diff --git a/packages/plugin-cloudflare/package.json b/packages/plugin-cloudflare/package.json index f966eb05992..7142cdea72c 100644 --- a/packages/plugin-cloudflare/package.json +++ b/packages/plugin-cloudflare/package.json @@ -36,7 +36,7 @@ "clean": "nx clean", "lint": "nx lint", "lint:fix": "nx lint:fix", - "prepack": "NODE_ENV=production pnpm nx build && cp ../../README.md README.md", + "prepack": "NODE_ENV=production pnpm nx build && pnpm oclif manifest && cp ../../README.md README.md", "vitest": "vitest", "type-check": "nx type-check" }, diff --git a/packages/plugin-did-you-mean/package.json b/packages/plugin-did-you-mean/package.json index 3c44cd0935e..f1d457e8182 100644 --- a/packages/plugin-did-you-mean/package.json +++ b/packages/plugin-did-you-mean/package.json @@ -31,7 +31,7 @@ "clean": "nx clean", "lint": "nx lint", "lint:fix": "nx lint:fix", - "prepack": "NODE_ENV=production pnpm nx build && cp ../../README.md README.md", + "prepack": "NODE_ENV=production pnpm nx build && pnpm oclif manifest && cp ../../README.md README.md", "vitest": "vitest", "type-check": "nx type-check" }, diff --git a/packages/theme/package.json b/packages/theme/package.json index 49c98f34424..e2af07c0843 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -31,7 +31,7 @@ "clean": "nx clean", "lint": "nx lint", "lint:fix": "nx lint:fix", - "prepack": "NODE_ENV=production pnpm nx build && cp ../../README.md README.md", + "prepack": "NODE_ENV=production pnpm nx build && pnpm oclif manifest && cp ../../README.md README.md", "vitest": "vitest", "type-check": "nx type-check" },