diff --git a/.gitignore b/.gitignore index fce928dc..25988c33 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # Dependencies node_modules/ +.pnpm-store/ .pnp .pnp.* .yarn/* diff --git a/packages/app-astro/stats/5.16.15.json b/packages/app-astro/stats/5.16.15.json index ec869649..ce43d98e 100644 --- a/packages/app-astro/stats/5.16.15.json +++ b/packages/app-astro/stats/5.16.15.json @@ -139,5 +139,20 @@ "bytesPerSec": 118718464 } ] + }, + "packageJson": { + "dependencies": { + "@astrojs/node": "9.5.2", + "@astrojs/react": "4.3.0", + "astro": "5.16.15", + "react": "19.1.0", + "react-dom": "19.1.0" + }, + "devDependencies": { + "@astrojs/check": "^0.9.6", + "@types/react": "^19.2.14", + "@types/react-dom": "^19.2.3", + "typescript": "^5.9.3" + } } } diff --git a/packages/starter-astro/stats/5.16.15.json b/packages/starter-astro/stats/5.16.15.json index b75bf38e..b7646d2f 100644 --- a/packages/starter-astro/stats/5.16.15.json +++ b/packages/starter-astro/stats/5.16.15.json @@ -124,5 +124,14 @@ "baselineYear": null, "baselineReason": null, "baselineFeatureCount": 0 + }, + "packageJson": { + "dependencies": { + "astro": "5.16.15" + }, + "devDependencies": { + "@astrojs/check": "^0.9.6", + "typescript": "^5.9.3" + } } } diff --git a/packages/stats-generator/src/save-ci-stats.ts b/packages/stats-generator/src/save-ci-stats.ts index 266b13d3..c423516a 100644 --- a/packages/stats-generator/src/save-ci-stats.ts +++ b/packages/stats-generator/src/save-ci-stats.ts @@ -3,6 +3,7 @@ import { getFrameworks } from './get-frameworks.ts' import { packagesDir } from './constants.ts' import { getDependencyCountsFromPackageMetadata, + getPackageJsonDeps, normalizeCIStats, readJsonFile, writeJsonFile, @@ -163,6 +164,11 @@ async function main() { console.warn(`No e18e stats artifact found at ${e18eArtifactPath}`) } + stats = { + ...stats, + packageJson: getPackageJsonDeps(packageName), + } + // Save to ci-stats.json const ciStatsPath = join(packagesDir, packageName, 'ci-stats.json') writeJsonFile(ciStatsPath, stats) @@ -306,6 +312,11 @@ async function main() { ) } + stats = { + ...stats, + packageJson: getPackageJsonDeps(packageName), + } + // Save to ci-stats.json const ciStatsPath = join(packagesDir, packageName, 'ci-stats.json') writeJsonFile(ciStatsPath, stats) diff --git a/packages/stats-generator/src/save-stats.ts b/packages/stats-generator/src/save-stats.ts index 01dead0b..402865fa 100644 --- a/packages/stats-generator/src/save-stats.ts +++ b/packages/stats-generator/src/save-stats.ts @@ -41,5 +41,7 @@ export async function saveStats( } } - await writeFile(filePath, JSON.stringify(mergedStats, null, 2), 'utf-8') + const { packageJson: _packageJson, ...docsStats } = mergedStats + + await writeFile(filePath, JSON.stringify(docsStats, null, 2), 'utf-8') } diff --git a/packages/stats-generator/src/types.ts b/packages/stats-generator/src/types.ts index f958fd93..b56b8010 100644 --- a/packages/stats-generator/src/types.ts +++ b/packages/stats-generator/src/types.ts @@ -109,6 +109,11 @@ export interface CIStats { message: string fixableBy?: string }> + // Snapshot of the package.json dependencies at measurement time + packageJson?: { + dependencies?: Record + devDependencies?: Record + } } export interface InstallStats { diff --git a/packages/stats-generator/src/utils.ts b/packages/stats-generator/src/utils.ts index 18fcb615..59f57e4f 100644 --- a/packages/stats-generator/src/utils.ts +++ b/packages/stats-generator/src/utils.ts @@ -75,20 +75,29 @@ function countPnpmLockPackages(lockfileContent: string): number { return count } -export function getDependencyCountsFromPackageMetadata(packageName: string) { +export function getPackageJsonDeps(packageName: string) { const packageJsonPath = join(packagesDir, packageName, 'package.json') const packageJson = JSON.parse( readFileSync(packageJsonPath, 'utf-8'), ) as PackageJson + return { + dependencies: packageJson.dependencies ?? {}, + devDependencies: packageJson.devDependencies ?? {}, + } +} + +export function getDependencyCountsFromPackageMetadata(packageName: string) { + const { dependencies, devDependencies } = getPackageJsonDeps(packageName) + const lockfilePath = join(packagesDir, packageName, 'pnpm-lock.yaml') const allDependencies = existsSync(lockfilePath) ? countPnpmLockPackages(readFileSync(lockfilePath, 'utf-8')) : undefined return { - prodDependencies: Object.keys(packageJson.dependencies ?? {}).length, - devDependencies: Object.keys(packageJson.devDependencies ?? {}).length, + prodDependencies: Object.keys(dependencies).length, + devDependencies: Object.keys(devDependencies).length, allDependencies, } }