Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion apps/dashboard/src/components/vite/BuildTimeChart.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {
YAxis,
} from "recharts";
import * as semver from "semver";
import viteStats from "../../../../../data/vite-version-stats.json";
import { viteStats } from "../../data/viteStats";

const buildTimeData = viteStats
.map((stat) => ({
Expand Down
2 changes: 1 addition & 1 deletion apps/dashboard/src/components/vite/BundleSizeChart.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import {
YAxis,
} from "recharts";
import * as semver from "semver";
import viteStats from "../../../../../data/vite-version-stats.json";
import { viteStats } from "../../data/viteStats";

const sortedViteStats = [...viteStats].toSorted((a, b) => semver.compare(a.version, b.version));

Expand Down
2 changes: 1 addition & 1 deletion apps/dashboard/src/components/vite/StatsCards.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { useMemo } from "react";
import { formatNumberWithCommas } from "@vibe/utils";
import viteStats from "../../../../../data/vite-version-stats.json";
import { viteStats } from "../../data/viteStats";

export function StatsCards() {
const stats = useMemo(() => {
Expand Down
21 changes: 21 additions & 0 deletions apps/dashboard/src/data/viteStats.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import rawViteStats from "../../../../data/vite-version-stats.json";

export interface ViteStatFile {
path: string;
size: number;
type: string;
}

export interface ViteStat {
version: string;
timestamp: string;
publicationDate: string;
files: ViteStatFile[];
totalSize: number;
buildTime: number;
}

// Typed view of the generated stats. The underlying JSON can be an empty array
// (e.g. before any stable Vite 8 release exists), which would otherwise be
// inferred as `never[]` and break every property access downstream.
export const viteStats = rawViteStats as ViteStat[];
2 changes: 1 addition & 1 deletion apps/dashboard/src/pages/ViteStatsPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { PageHeader } from "@vibe/shared";
import { Badge } from "@vibe/ui";
import { BarChart3, Clock, Package, TrendingUp } from "lucide-react";
import { useState } from "react";
import viteStatsData from "../../../../data/vite-version-stats.json";
import { viteStats as viteStatsData } from "../data/viteStats";
import { PageContainer } from "../components/layout/PageContainer";
import ViteStats from "../ViteStats";

Expand Down
12 changes: 9 additions & 3 deletions tools/override-vite.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -345,9 +345,15 @@ async function collectAllVersionStats() {
console.log("\n🔄 Restoring original package.json...");
writeFileSync(DASHBOARD_PACKAGE_PATH, originalPackageJson);

// Save results
console.log(`\n💾 Saving results to ${STATS_OUTPUT_PATH}...`);
writeFileSync(STATS_OUTPUT_PATH, JSON.stringify(allStats, null, 2));
// Save results. Skip writing an empty dataset (e.g. when no stable Vite 8
// release exists yet) so we don't clobber the existing tracked stats and
// break the type-checked dashboard build.
if (allStats.length === 0) {
console.log(`\n⏭️ No stats collected — leaving ${STATS_OUTPUT_PATH} unchanged.`);
} else {
console.log(`\n💾 Saving results to ${STATS_OUTPUT_PATH}...`);
writeFileSync(STATS_OUTPUT_PATH, JSON.stringify(allStats, null, 2));
}

console.log("\n==================== ANALYSIS COMPLETE ====================");
console.log(`📊 Analysis Summary:`);
Expand Down
Loading