stack/package.json
Shridhar Deshmukh 85698aed70
ref: use commander for arguments parsing (#531)
- fixes https://github.com/stack-auth/stack-auth/issues/530

Adding [commander](https://github.com/tj/commander.js) to parse CLI
arguments and options. Commander auto generates a help section based on
configured options.

Both `npx @stackframe/init-stack` and `npx @stacframe/init-stack --next`
both should initialize auth in working directory


```bash
➜  init-stack git:(dev) ✗ node dist/index.js --version
2.7.25
➜  init-stack git:(dev) ✗ node dist/index.js --help
Usage: @stackframe/init-stack [project-path] [options]

Stack Auth Initialization Tool

Arguments:
  project-path   Path to your project

Options:
  -V, --version  output the version number
  --dry-run      Run without making any changes
  --neon         Use Neon database
  --js           Initialize for JavaScript project
  --next         Initialize for Next.js project
  --npm          Use npm as package manager
  --yarn         Use yarn as package manager
  --pnpm         Use pnpm as package manager
  --bun          Use bun as package manager
  --client       Initialize client-side only
  --server       Initialize server-side only
  --no-browser   Don't open browser for environment variable setup
  -h, --help     display help for command

For more information, please visit https://docs.stack-auth.com/getting-started/setup
```

<!-- ELLIPSIS_HIDDEN -->

----

> [!IMPORTANT]
> Replaces manual CLI argument parsing with `commander` in `init-stack`,
simplifying code and auto-generating help text.
> 
>   - **Behavior**:
> - Replaces manual CLI argument parsing with `commander` in `index.ts`.
> - Automatically generates help and version output using `commander`.
> - Supports options like `--dry-run`, `--neon`, `--js`, `--next`,
`--npm`, `--yarn`, `--pnpm`, `--bun`, `--client`, `--server`,
`--no-browser`.
>   - **Dependencies**:
> - Adds `commander` as a dependency in `package.json` and
`packages/init-stack/package.json`.
>   - **Code Cleanup**:
>     - Removes manual argument parsing logic from `index.ts`.
> - Simplifies `main()` function by using `commander` to handle options.
> 
> <sup>This description was created by </sup>[<img alt="Ellipsis"
src="https://img.shields.io/badge/Ellipsis-blue?color=175173">](https://www.ellipsis.dev?ref=stack-auth%2Fstack-auth&utm_source=github&utm_medium=referral)<sup>
for 4d4e2a8324. It will automatically
update as commits are pushed.</sup>

<!-- ELLIPSIS_HIDDEN -->

---------

Co-authored-by: Konsti Wohlwend <n2d4xc@gmail.com>
Co-authored-by: Zai Shi <zaishi00@outlook.com>
2025-03-12 22:17:19 +01:00

106 lines
7.2 KiB
JSON

{
"name": "@stackframe/monorepo",
"version": "0.0.0",
"private": true,
"repository": "",
"scripts": {
"pre-no-codegen": "npx -y only-allow pnpm",
"pre-preinstall": "npx -y only-allow pnpm && node -e \"if(process.env.STACK_SKIP_TEMPLATE_GENERATION !== 'true') require('child_process').execSync('npx --package=tsx tsx ./scripts/generate-sdks.ts', {stdio: 'inherit'})\"",
"pre": "pnpm pre-preinstall && node -e \"if(process.env.STACK_SKIP_TEMPLATE_GENERATION !== 'true') { require('child_process').execSync('pnpm run generate-docs', {stdio: 'inherit'}) }\"",
"preinstall": "pnpm pre-preinstall",
"typecheck": "pnpm pre && turbo typecheck",
"build:dev": "pnpm pre && NODE_ENV=development pnpm run build",
"build": "pnpm pre && turbo build",
"build:backend": "pnpm pre && turbo run build --filter=@stackframe/stack-backend...",
"build:dashboard": "pnpm pre && turbo run build --filter=@stackframe/stack-dashboard...",
"build:demo": "pnpm pre && turbo run build --filter=demo-app...",
"build:packages": "pnpm pre && turbo run build --filter=./packages/*",
"claude-code": "pnpm pre && npx -y @anthropic-ai/claude-code@latest",
"restart-dev-in-background": "pnpm pre && pnpm run kill-dev:named && (pnpm run dev:named > dev-server.log.untracked.txt 2>&1 &) && echo 'Starting dev server in background... (Logs are in dev-server.log.untracked.txt)' && npx wait-on http://localhost:8102 -t 120000 && echo 'Dev server running.'",
"restart-dev-environment": "pnpm pre && concurrently \"pnpm run build:packages && pnpm run codegen\" \"pnpm run restart-deps\" && pnpm run restart-dev-in-background",
"stop-dev-environment": "pnpm pre && pnpm run kill-dev:named && pnpm run stop-deps",
"clean": "pnpm pre-no-codegen && turbo run clean && rimraf --glob **/.next && rimraf --glob **/.turbo && rimraf .turbo && rimraf --glob **/node_modules",
"codegen": "pnpm pre && turbo run codegen && pnpm run generate-sdks",
"deps-compose": "docker compose -p stack-dependencies -f docker/dependencies/docker.compose.yaml",
"stop-deps": "POSTGRES_DELAY_MS=0 pnpm run deps-compose kill && POSTGRES_DELAY_MS=0 pnpm run deps-compose down -v",
"init-db": "pnpm pre && pnpm run prisma migrate deploy && pnpm run prisma db seed",
"wait-until-postgres-is-ready:pg_isready": "until pg_isready -h localhost -p 5432; do sleep 1; done",
"wait-until-postgres-is-ready": "command -v pg_isready >/dev/null 2>&1 && pnpm run wait-until-postgres-is-ready:pg_isready || sleep 10 # not everyone has pg_isready installed, so we fallback to sleeping",
"start-deps:no-delay": "pnpm pre && pnpm run deps-compose up --detach --build && pnpm run wait-until-postgres-is-ready && pnpm run init-db && echo \"\\nDependencies started in the background as Docker containers. 'pnpm run stop-deps' to stop them\"n",
"start-deps": "POSTGRES_DELAY_MS=${POSTGRES_DELAY_MS:-20} pnpm run start-deps:no-delay",
"restart-deps": "pnpm pre && pnpm run stop-deps && pnpm run start-deps",
"restart-deps:no-delay": "pnpm pre && pnpm run stop-deps && pnpm run start-deps:no-delay",
"psql": "pnpm pre && pnpm run --filter=@stackframe/stack-backend psql",
"explain-query": "pnpm pre && echo 'Paste your query (end with Ctrl-D):' && query=$(cat) && echo 'Connecting to Postgres...' && printf \"EXPLAIN (ANALYZE, COSTS, VERBOSE, BUFFERS, FORMAT JSON)\n$query\" | pnpm run --silent psql -qAt | sed -n '/\\[/,$p' > explained-query.untracked.json && echo 'Explained query saved to explained-query.untracked.json. To analyze it, open it in the query analyzer at https://tatiyants.com/pev/#/plans/new'",
"prisma": "pnpm pre && pnpm run --filter=@stackframe/stack-backend prisma",
"fern": "pnpm pre && pnpm run --filter=@stackframe/docs fern",
"dev": "pnpm pre && concurrently -k \"pnpm run generate-sdks:watch\" \"pnpm run generate-docs:watch\" \"turbo run dev --concurrency 99999\"",
"dev:basic": "pnpm pre && concurrently -k \"pnpm run generate-sdks:watch\" \"pnpm run generate-docs:watch\" \"turbo run dev --concurrency 99999 --filter=@stackframe/stack-backend --filter=@stackframe/stack-dashboard --filter=@stackframe/mock-oauth-server\"",
"dev:docs": "pnpm pre && concurrently -k \"pnpm run generate-docs:watch\" \"turbo run dev --concurrency 99999 --filter=@stackframe/docs\"",
"dev:named": "pnpm pre && concurrently -k \"pnpm run dev\" \"node -e \\\"process.title='node (stack-named-dev-server)'; process.stdin.resume();\\\"\"",
"kill-dev:named": "(pgrep -f 'stack-named-dev-server' | xargs -r -n1 pkill -P); echo 'Killed named dev server (if found). Sleeping to give some time for it to shut down...' && sleep 10",
"start": "pnpm pre && turbo run start --concurrency 99999",
"start:backend": "pnpm pre && turbo run start --concurrency 99999 --filter=@stackframe/stack-backend",
"start:dashboard": "pnpm pre && turbo run start --concurrency 99999 --filter=@stackframe/stack-dashboard",
"start:mock-oauth-server": "pnpm pre && turbo run start --concurrency 99999 --filter=@stackframe/mock-oauth-server",
"lint": "pnpm pre && turbo run lint -- --max-warnings=0",
"release": "pnpm pre && release",
"peek": "pnpm pre && pnpm release --peek",
"changeset": "pnpm pre && changeset",
"test": "pnpm pre && vitest",
"test:e2e": "pnpm pre && vitest e2e/tests",
"test:unit": "pnpm pre && vitest src",
"verify-data-integrity": "pnpm pre && pnpm -C apps/backend run verify-data-integrity",
"generate-openapi": "pnpm pre && turbo run generate-openapi",
"generate-keys": "pnpm pre && turbo run generate-keys",
"generate-sdks": "npx --package=tsx tsx ./scripts/generate-sdks.ts",
"generate-sdks:watch": "chokidar --silent -c 'pnpm run generate-sdks' './packages/template' --ignore './packages/template/package.json' --ignore '**/node_modules/**' --ignore '**/dist/**' --ignore '**/.turbo/**' --throttle 2000",
"generate-docs": "tsx ./scripts/generate-docs.ts",
"generate-docs:watch": "chokidar --silent -c 'pnpm run generate-docs' './docs/fern/docs/pages-template' './docs/fern/docs-template.yml' --throttle 2000"
},
"devDependencies": {
"@changesets/cli": "^2.27.9",
"@testing-library/react": "^15.0.7",
"@types/node": "^20.17.6",
"@types/supertest": "^6.0.2",
"@typescript-eslint/eslint-plugin": "^6.21.0",
"@typescript-eslint/parser": "^6.21.0",
"@vitejs/plugin-react": "^4.3.3",
"chokidar-cli": "^3.0.0",
"concurrently": "^8.2.2",
"eslint": "8.30.0",
"eslint-config-next": "^14.2.17",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^6.6.0",
"eslint-plugin-react": "^7.37.2",
"jsdom": "^24.1.3",
"only-allow": "^1.2.1",
"rimraf": "^5.0.10",
"tsup": "^8.3.5",
"turbo": "^2.2.3",
"typescript": "5.3.3",
"vitest": "^1.6.0",
"wait-on": "^8.0.1"
},
"pnpm": {
"overrides": {
"@types/react": "^18.2.0",
"@types/react-dom": "^18.2.0"
},
"patchedDependencies": {
"openid-client@5.6.4": "patches/openid-client@5.6.4.patch"
}
},
"engines": {
"npm": ">=10.0.0",
"node": ">=20.0.0"
},
"packageManager": "pnpm@9.1.2",
"dependencies": {
"commander": "^13.1.0",
"tsx": "^4.19.3",
"yaml": "^2.4.5"
}
}