GROWI main application (apps/app) specific commands and scripts. Auto-invoked when working in apps/app.
Commands specific to the main GROWI application. For global commands (turbo, pnpm), see the global tech-stack skill.
IMPORTANT: Distinguish between Turborepo tasks and package-specific scripts.
| Task | Turborepo (turbo.json) | Package Script (package.json) |
|---|---|---|
lint | ✅ Yes | ✅ Yes (runs all lint:*) |
test | ✅ Yes | ✅ Yes |
build | ✅ Yes | ✅ Yes |
lint:typecheck | ❌ No | ✅ Yes |
lint:biome | ❌ No | ✅ Yes |
lint:styles |
| ❌ No |
| ✅ Yes |
# Run ALL quality checks (uses Turborepo caching)
turbo run lint --filter @growi/app
turbo run test --filter @growi/app
turbo run build --filter @growi/app
# Run INDIVIDUAL lint checks (package-specific scripts, from apps/app directory)
pnpm run lint:typecheck # TypeScript only
pnpm run lint:biome # Biome only
pnpm run lint:styles # Stylelint only
Running individual test files: See the
testingrule (.claude/rules/testing.md).
| Task | Command |
|---|---|
| Migration | pnpm run dev:migrate |
| OpenAPI generate | pnpm run openapi:generate-spec:apiv3 |
| REPL console | pnpm run console |
| Visual regression | pnpm run reg:run |
| Version bump | pnpm run version:patch |
# Run pending migrations
pnpm run dev:migrate
# Check migration status
pnpm run dev:migrate:status
# Apply migrations
pnpm run dev:migrate:up
# Rollback last migration
pnpm run dev:migrate:down
# Production migration
pnpm run migrate
Note: Migrations use migrate-mongo. Files are in config/migrate-mongo/.
# Create migration file manually in config/migrate-mongo/
# Format: YYYYMMDDHHMMSS-migration-name.js
# Test migration cycle
pnpm run dev:migrate:up
pnpm run dev:migrate:down
pnpm run dev:migrate:up
# Generate OpenAPI spec for API v3
pnpm run openapi:generate-spec:apiv3
# Validate API v3 spec
pnpm run lint:openapi:apiv3
# Generate operation IDs
pnpm run openapi:build:generate-operation-ids
Generated specs output to tmp/openapi-spec-apiv3.json.
# Development mode
pnpm run dev:pre:styles-commons
pnpm run dev:pre:styles-components
# Production mode
pnpm run pre:styles-commons
pnpm run pre:styles-commons-components
Pre-builds SCSS styles into CSS bundles using Vite.
pnpm run console
# or
pnpm run repl
Interactive Node.js REPL with Mongoose models loaded. Useful for debugging database queries.
pnpm run reg:run
# Bump patch version (e.g., 7.4.3 → 7.4.4)
pnpm run version:patch
# Create prerelease (e.g., 7.4.4 → 7.4.5-RC.0)
pnpm run version:prerelease
# Create preminor (e.g., 7.4.4 → 7.5.0-RC.0)
pnpm run version:preminor
# Measure module count KPI (cleans .next, starts next dev, triggers compilation)
./bin/measure-chunk-stats.sh # default port 3099
./bin/measure-chunk-stats.sh 3001 # custom port
Output: [ChunkModuleStats] initial: N, async-only: N, total: N
For details on module optimization and baselines, see the build-optimization skill.
# Start server (after build)
pnpm run server
# Start for CI environments
pnpm run server:ci
Note: preserver hook automatically runs migrations before starting.
# Launch dev server for CI
pnpm run launch-dev:ci
# Start production server for CI
pnpm run server:ci
Development uses dotenv-flow:
.env - Default values.env.local - Local overrides (not committed).env.development - Development-specific.env.production - Production-specificSee .env.example for available variables.
pnpm run dev:migrate:status # Check status
pnpm run dev:migrate:down # Rollback
pnpm run dev:migrate:up # Re-apply
pnpm run clean # Clear artifacts
pnpm run build # Rebuild