diff --git a/packages/app/package.json b/packages/app/package.json index 2c49e2526d3..e1b43066028 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -49,7 +49,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 022e607d446..42937445fdb 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..b057bc8c5f2 100644 --- a/packages/cli/src/cli/repo-health.test.ts +++ b/packages/cli/src/cli/repo-health.test.ts @@ -109,3 +109,35 @@ 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} + } + + const shipsOclifManifest = packageJson.files?.some((file) => + file.replace(/^\.?\//, '').endsWith('oclif.manifest.json'), + ) + if (!shipsOclifManifest) continue + if (!/\boclif\s+manifest\b/.test(packageJson.scripts?.prepack ?? '')) { + 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 afc005fa396..6e3476af1a6 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 5d3799ad404..971e3fb643f 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 e10a4cb1086..ae3b65d8b47 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/store/package.json b/packages/store/package.json index b62c69e1d95..ef7eb47550f 100644 --- a/packages/store/package.json +++ b/packages/store/package.json @@ -30,7 +30,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 0adac287ea0..b3105e22166 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" },