mirror of
https://github.com/stack-auth/stack.git
synced 2026-06-04 21:04:37 +08:00
- 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>
106 lines
7.2 KiB
JSON
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"
|
|
}
|
|
}
|