From 9fb7bacee62c34d6d05312d063a37c20d581de23 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Mon, 7 Sep 2026 17:47:36 -0700 Subject: [PATCH] Rename package scripts to colon-based conventions and update build, seed, and API client references --- .github/workflows/ci.yml | 4 +- Dockerfile | 4 +- package.json | 68 +++++++++++++++++----------------- packages/api-client/README.md | 2 +- scripts/generate-api-client.ts | 4 +- scripts/seed-data.ts | 22 +++++------ src/openapi/README.md | 2 +- 7 files changed, 52 insertions(+), 54 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 44f94a6c5..a4cf0f47d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,8 +25,8 @@ jobs: - run: pnpm install - run: pnpm openapi:generate - run: pnpm openapi:check --explicit - - run: pnpm check:api-client - - run: pnpm build-packages + - run: pnpm check:api:client + - run: pnpm build:packages - run: pnpm test - run: pnpm test:packages - run: pnpm build diff --git a/Dockerfile b/Dockerfile index 4a8df4c54..9cfabb0b7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,7 +25,7 @@ RUN pnpm install --frozen-lockfile FROM node:${NODE_IMAGE_VERSION} AS builder ARG PNPM_VERSION WORKDIR /app -# build-openapi shells out to pnpm, so the builder stage needs it too +# build:openapi shells out to pnpm, so the builder stage needs it too RUN npm install -g pnpm@${PNPM_VERSION} COPY --from=deps /app/node_modules ./node_modules COPY . . @@ -40,7 +40,7 @@ ENV DATABASE_URL="postgresql://user:pass@localhost:5432/dummy" ARG SKIP_BUILD_GEO ENV SKIP_BUILD_GEO=$SKIP_BUILD_GEO -RUN npm run build-docker +RUN pnpm build:docker # Production image, copy all the files and run next FROM node:${NODE_IMAGE_VERSION} AS runner diff --git a/package.json b/package.json index dc38b8e0e..e0d8439fc 100644 --- a/package.json +++ b/package.json @@ -12,46 +12,44 @@ "type": "module", "scripts": { "dev": "dotenv next dev --turbo", - "build": "npm-run-all check-env build-db check-db build-tracker build-recorder build-geo build-openapi build-packages build-app", + "build": "npm-run-all check:env build:db check:db build:tracker build:recorder build:geo build:openapi build:packages build:app", "start": "next start", - "build-docker": "npm-run-all build-db build-tracker build-recorder build-geo build-openapi build-packages build-app", - "start-docker": "npm-run-all check-db update-tracker start-server", - "start-env": "node scripts/start-env.js", - "start-server": "node server.js", - "build-app": "next build --turbo", - "build-icons": "svgr ./src/assets --out-dir src/components/svg --typescript", - "build-components": "node scripts/bump-components.js && tsup", - "build-tracker": "npm-run-all check-tracker build-tracker-script build-tracker-types", - "build-tracker-script": "rollup -c rollup.tracker.config.js", - "build-tracker-types": "tsc -p tsconfig.tracker.types.json && biome format --write src/tracker/index.d.ts", - "check-tracker": "tsc -p tsconfig.tracker.json --noEmit", - "build-recorder": "rollup -c rollup.recorder.config.js", - "build-prisma-client": "node scripts/build-prisma-client.js", - "build-lang": "npm-run-all download-country-names download-language-names", - "build-geo": "node scripts/build-geo.js", - "build-openapi": "npm-run-all openapi:generate generate:api-client", - "build-db": "npm-run-all build-db-client build-prisma-client", - "build-db-schema": "prisma db pull", - "build-db-client": "prisma generate", - "update-tracker": "node scripts/update-tracker.js", - "update-db": "prisma migrate deploy", - "check-db": "node scripts/check-db.js", - "check-env": "node scripts/check-env.js", - "check-missing-messages": "node scripts/check-missing-messages.js", - "copy-db-files": "node scripts/copy-db-files.js", - "download-country-names": "node scripts/download-country-names.js", - "download-language-names": "node scripts/download-language-names.js", - "change-password": "node scripts/change-password.js", + "build:docker": "npm-run-all build:db build:tracker build:recorder build:geo build:openapi build:packages build:app", + "start:docker": "npm-run-all check:db update:tracker start:server", + "start:env": "node scripts/start-env.js", + "start:server": "node server.js", + "build:app": "next build --turbo", + "build:icons": "svgr ./src/assets --out-dir src/components/svg --typescript", + "build:components": "node scripts/bump-components.js && tsup", + "build:tracker": "npm-run-all check:tracker build:tracker:script build:tracker:types", + "build:tracker:script": "rollup -c rollup.tracker.config.js", + "build:tracker:types": "tsc -p tsconfig.tracker.types.json && biome format --write src/tracker/index.d.ts", + "check:tracker": "tsc -p tsconfig.tracker.json --noEmit", + "build:recorder": "rollup -c rollup.recorder.config.js", + "build:prisma:client": "node scripts/build-prisma-client.js", + "build:languages": "npm-run-all download:countries download:languages", + "build:geo": "node scripts/build-geo.js", + "build:openapi": "npm-run-all openapi:generate generate:api:client", + "build:db": "npm-run-all generate:db:client build:prisma:client", + "db:pull": "prisma db pull", + "generate:db:client": "prisma generate", + "update:tracker": "node scripts/update-tracker.js", + "db:migrate": "prisma migrate deploy", + "check:db": "node scripts/check-db.js", + "check:env": "node scripts/check-env.js", + "check:messages": "node scripts/check-missing-messages.js", + "download:countries": "node scripts/download-country-names.js", + "download:languages": "node scripts/download-language-names.js", "openapi:generate": "tsx scripts/generate-openapi.ts", "openapi:contracts": "tsx scripts/generate-openapi-contracts.ts", "openapi:check": "tsx scripts/check-openapi.ts", - "generate:api": "npm-run-all openapi:generate generate:api-client", - "generate:api-client": "tsx scripts/generate-api-client.ts", - "check:api-client": "tsx scripts/generate-api-client.ts --check", - "build-packages": "pnpm --filter \"./packages/**\" -r build", + "generate:api": "npm-run-all openapi:generate generate:api:client", + "generate:api:client": "tsx scripts/generate-api-client.ts", + "check:api:client": "tsx scripts/generate-api-client.ts --check", + "build:packages": "pnpm --filter \"./packages/**\" -r build", "test:packages": "pnpm --filter \"./packages/**\" -r test", "postbuild": "node scripts/postbuild.js", - "pretest": "pnpm build-db-client", + "pretest": "pnpm generate:db:client", "test": "vitest run", "test:watch": "vitest", "test:e2e": "playwright test", @@ -62,7 +60,7 @@ "test:api:up": "tsx scripts/test-api.ts --up-only", "test:api:down": "tsx scripts/test-api.ts --down", "test:api:coverage": "tsx scripts/test-api.ts --coverage-report", - "seed-data": "tsx scripts/seed-data.ts", + "db:seed": "tsx scripts/seed-data.ts", "lint": "biome lint .", "format": "biome format --write .", "check": "biome check --write" diff --git a/packages/api-client/README.md b/packages/api-client/README.md index dc858c561..4b3240173 100644 --- a/packages/api-client/README.md +++ b/packages/api-client/README.md @@ -76,7 +76,7 @@ From the Umami repository root: ```bash pnpm generate:api # public/openapi.json → packages/api-client/src/generated -pnpm check:api-client # CI: fail if generated files are stale +pnpm check:api:client # CI: fail if generated files are stale ``` See [MIGRATION.md](./MIGRATION.md) if you are upgrading from the previous hand-written client. diff --git a/scripts/generate-api-client.ts b/scripts/generate-api-client.ts index f845308c2..693fbdc19 100644 --- a/scripts/generate-api-client.ts +++ b/scripts/generate-api-client.ts @@ -1,8 +1,8 @@ /** * Generates `packages/api-client/src/generated/*` from `public/openapi.json`. * - * pnpm generate:api-client write generated files - * pnpm generate:api-client --check fail if generated files are stale + * pnpm generate:api:client write generated files + * pnpm generate:api:client --check fail if generated files are stale * * The OpenAPI document is the single source of truth: operation IDs become client method names, * parameter/body/response schemas become input/output types. Never edit generated files by hand. diff --git a/scripts/seed-data.ts b/scripts/seed-data.ts index 56fc34ced..68a6c913c 100644 --- a/scripts/seed-data.ts +++ b/scripts/seed-data.ts @@ -10,10 +10,10 @@ * - Demo SaaS: Average traffic (~500 sessions/day) * * Usage: - * npm run seed-data # Generate 30 days of data - * npm run seed-data -- --days 90 # Generate 90 days of data - * npm run seed-data -- --clear # Clear existing demo data first - * npm run seed-data -- --verbose # Show detailed progress + * pnpm db:seed # Generate 30 days of data + * pnpm db:seed --days 90 # Generate 90 days of data + * pnpm db:seed --clear # Clear existing demo data first + * pnpm db:seed --verbose # Show detailed progress */ import { type SeedConfig, seed } from './seed/index.js'; @@ -63,7 +63,7 @@ Umami Sample Data Generator Generates realistic analytics data for local development and testing. Usage: - npm run seed-data [options] + pnpm db:seed [options] Options: --days Number of days of data to generate (default: 30) @@ -72,10 +72,10 @@ Options: --help, -h Show this help message Examples: - npm run seed-data # Generate 30 days of data - npm run seed-data -- --days 90 # Generate 90 days of data - npm run seed-data -- --clear # Clear existing demo data first - npm run seed-data -- --days 7 -v # Generate 7 days with verbose output + pnpm db:seed # Generate 30 days of data + pnpm db:seed --days 90 # Generate 90 days of data + pnpm db:seed --clear # Clear existing demo data first + pnpm db:seed --days 7 -v # Generate 7 days with verbose output Generated Sites: - Demo Blog: Low traffic (~90 sessions/month) @@ -91,13 +91,13 @@ function checkEnvironment(): void { const nodeEnv = process.env.NODE_ENV; if (nodeEnv === 'production') { - console.error('\nError: seed-data cannot run in production environment.'); + console.error('\nError: db:seed cannot run in production environment.'); console.error('This script is only for local development and testing.\n'); process.exit(1); } if (process.env.VERCEL || process.env.NETLIFY || process.env.RAILWAY_ENVIRONMENT) { - console.error('\nError: seed-data cannot run in cloud environments.'); + console.error('\nError: db:seed cannot run in cloud environments.'); console.error('This script is only for local development and testing.\n'); process.exit(1); } diff --git a/src/openapi/README.md b/src/openapi/README.md index e96aa5620..0fd613703 100644 --- a/src/openapi/README.md +++ b/src/openapi/README.md @@ -97,4 +97,4 @@ table (`src/lib/mcp/dispatch.ts`). ## Generated API client `pnpm generate:api` regenerates the OpenAPI document and `packages/api-client/src/generated`. -`pnpm check:api-client` fails in CI when the generated client is stale. +`pnpm check:api:client` fails in CI when the generated client is stale.