better-ts-stack 1.1.4 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +113 -82
- package/dist/args.d.ts +12 -0
- package/dist/args.d.ts.map +1 -0
- package/dist/args.js +90 -0
- package/dist/args.js.map +1 -0
- package/dist/builder/configGenerator.d.ts.map +1 -1
- package/dist/builder/configGenerator.js +10 -3
- package/dist/builder/configGenerator.js.map +1 -1
- package/dist/builder/dependencyInstaller.d.ts.map +1 -1
- package/dist/builder/dependencyInstaller.js +8 -14
- package/dist/builder/dependencyInstaller.js.map +1 -1
- package/dist/builder/gitInitializer.d.ts.map +1 -1
- package/dist/builder/gitInitializer.js +8 -41
- package/dist/builder/gitInitializer.js.map +1 -1
- package/dist/builder/index.d.ts.map +1 -1
- package/dist/builder/index.js +24 -63
- package/dist/builder/index.js.map +1 -1
- package/dist/builder/moduleSelector.d.ts +1 -4
- package/dist/builder/moduleSelector.d.ts.map +1 -1
- package/dist/builder/moduleSelector.js +11 -15
- package/dist/builder/moduleSelector.js.map +1 -1
- package/dist/builder/templateContext.d.ts +2 -17
- package/dist/builder/templateContext.d.ts.map +1 -1
- package/dist/builder/templateContext.js +6 -5
- package/dist/builder/templateContext.js.map +1 -1
- package/dist/index.js +45 -20
- package/dist/index.js.map +1 -1
- package/dist/output/nextSteps.d.ts +1 -2
- package/dist/output/nextSteps.d.ts.map +1 -1
- package/dist/output/nextSteps.js +10 -19
- package/dist/output/nextSteps.js.map +1 -1
- package/dist/prompts/index.d.ts +3 -3
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +22 -58
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/stack.d.ts +3 -2
- package/dist/prompts/stack.d.ts.map +1 -1
- package/dist/prompts/stack.js +81 -70
- package/dist/prompts/stack.js.map +1 -1
- package/dist/types/index.d.ts +20 -42
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +40 -38
- package/dist/types/index.js.map +1 -1
- package/dist/ui/index.d.ts +3 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +19 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/messages.d.ts +9 -0
- package/dist/ui/messages.d.ts.map +1 -0
- package/dist/ui/messages.js +100 -0
- package/dist/ui/messages.js.map +1 -0
- package/dist/ui/prompts.d.ts +20 -0
- package/dist/ui/prompts.d.ts.map +1 -0
- package/dist/ui/prompts.js +71 -0
- package/dist/ui/prompts.js.map +1 -0
- package/dist/ui/theme.d.ts +9 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +24 -0
- package/dist/ui/theme.js.map +1 -0
- package/dist/validators/index.d.ts +1 -0
- package/dist/validators/index.d.ts.map +1 -1
- package/dist/validators/index.js +6 -0
- package/dist/validators/index.js.map +1 -1
- package/package.json +70 -66
- package/templates/backend/express/config.json +44 -44
- package/templates/backend/express/eslint.config.mjs +40 -40
- package/templates/backend/express/gitignore +36 -36
- package/templates/backend/express/src/index.ts +76 -76
- package/templates/backend/express/src/routes/health.ts +12 -12
- package/templates/backend/express/tsconfig.json +25 -25
- package/templates/backend/nestjs/.prettierignore +52 -0
- package/templates/backend/nestjs/.prettierrc +16 -0
- package/templates/backend/nestjs/config.json +44 -0
- package/templates/backend/nestjs/eslint.config.mjs +40 -0
- package/templates/backend/nestjs/gitignore +36 -0
- package/templates/backend/nestjs/nest-cli.json +9 -0
- package/templates/backend/nestjs/src/app.module.ts.hbs +34 -0
- package/templates/backend/nestjs/src/health/health.controller.ts +12 -0
- package/templates/backend/nestjs/src/main.ts +23 -0
- package/templates/backend/nestjs/tsconfig.eslint.json +9 -0
- package/templates/backend/nestjs/tsconfig.json +25 -0
- package/templates/frontend/nextjs/app/layout.tsx +13 -13
- package/templates/frontend/nextjs/app/page.tsx.hbs +97 -97
- package/templates/frontend/nextjs/components/ui/button.tsx +51 -51
- package/templates/frontend/nextjs/components/ui/card.tsx +60 -60
- package/templates/frontend/nextjs/components/ui/field.tsx +67 -67
- package/templates/frontend/nextjs/components/ui/input.tsx +18 -18
- package/templates/frontend/nextjs/components.json +19 -19
- package/templates/frontend/nextjs/config.json +38 -38
- package/templates/frontend/nextjs/eslint.config.mjs +11 -11
- package/templates/frontend/nextjs/gitignore +42 -42
- package/templates/frontend/nextjs/lib/utils.ts +6 -6
- package/templates/frontend/nextjs/next.config.ts.hbs +12 -12
- package/templates/frontend/nextjs/proxy.ts.hbs +24 -24
- package/templates/frontend/nextjs/tsconfig.json +34 -34
- package/templates/frontend/tanstack/config.json +48 -48
- package/templates/frontend/tanstack/src/routeTree.gen.ts +68 -68
- package/templates/frontend/tanstack/src/styles/app.css +85 -85
- package/templates/modules/auth/express/config.json +27 -26
- package/templates/modules/auth/express/src/controllers/authController.ts.hbs +116 -130
- package/templates/modules/auth/express/src/middleware/requireAuth.ts.hbs +26 -26
- package/templates/modules/auth/express/src/services/userStore.ts.hbs +117 -117
- package/templates/modules/auth/nestjs/config.json +24 -0
- package/templates/modules/auth/nestjs/src/auth/auth.controller.ts +46 -0
- package/templates/modules/auth/nestjs/src/auth/auth.guard.ts +36 -0
- package/templates/modules/auth/nestjs/src/auth/auth.module.ts.hbs +22 -0
- package/templates/modules/auth/nestjs/src/auth/auth.schemas.ts +35 -0
- package/templates/modules/auth/nestjs/src/auth/auth.service.ts +70 -0
- package/templates/modules/auth/nestjs/src/auth/jwt.ts +27 -0
- package/templates/modules/auth/nestjs/src/auth/users.service.ts.hbs +144 -0
- package/templates/modules/auth/nestjs/src/auth/zod-validation.pipe.ts +16 -0
- package/templates/modules/auth/nextjs/app/dashboard/page.tsx +96 -96
- package/templates/modules/auth/nextjs/app/sign-in/page.tsx +35 -35
- package/templates/modules/auth/nextjs/app/sign-up/page.tsx +35 -35
- package/templates/modules/auth/nextjs/components/auth/sign-in-form.tsx +132 -132
- package/templates/modules/auth/nextjs/components/auth/sign-out-button.tsx +50 -50
- package/templates/modules/auth/nextjs/components/auth/sign-up-form.tsx +152 -152
- package/templates/modules/auth/nextjs/config.json +31 -31
- package/templates/modules/auth/nextjs/lib/auth-schema.ts +39 -39
- package/templates/modules/auth/nextjs/lib/auth.ts.hbs +37 -37
- package/templates/modules/auth/tanstack/src/lib/auth-functions.ts +4 -4
- package/templates/modules/auth/tanstack/src/routeTree.gen.ts +140 -140
- package/templates/modules/docker/.dockerignore +14 -14
- package/templates/modules/docker/Dockerfile.hbs +137 -133
- package/templates/modules/docker/config.json +19 -19
- package/templates/modules/docker/docker-compose.yml.hbs +9 -9
- package/templates/modules/drizzle/express/config.json +27 -27
- package/templates/modules/drizzle/express/drizzle.config.ts +13 -13
- package/templates/modules/drizzle/express/src/lib/db.ts +13 -13
- package/templates/modules/drizzle/express/src/lib/schema.ts +10 -10
- package/templates/modules/drizzle/nestjs/config.json +27 -0
- package/templates/modules/drizzle/nestjs/drizzle.config.ts +13 -0
- package/templates/modules/drizzle/nestjs/src/database/database.module.ts +30 -0
- package/templates/modules/drizzle/nestjs/src/database/schema.ts +10 -0
- package/templates/modules/drizzle/nextjs/config.json +29 -29
- package/templates/modules/drizzle/nextjs/lib/db.ts +13 -13
- package/templates/modules/drizzle/nextjs/lib/schema.ts.hbs +84 -84
- package/templates/modules/mongoose/express/config.json +16 -16
- package/templates/modules/mongoose/nestjs/config.json +16 -0
- package/templates/modules/mongoose/nestjs/src/users/user.schema.ts +21 -0
- package/templates/modules/mongoose/nextjs/config.json +16 -16
- package/templates/modules/mongoose/nextjs/lib/db.ts +36 -36
- package/templates/modules/mongoose/tanstack/config.json +17 -17
- package/templates/modules/mongoose/tanstack/src/lib/db.ts +37 -37
- package/templates/modules/prisma/express/config.json +28 -28
- package/templates/modules/prisma/express/prisma/schema.prisma +1 -1
- package/templates/modules/prisma/express/prisma.config.ts +12 -12
- package/templates/modules/prisma/express/src/lib/prisma.ts +24 -24
- package/templates/modules/prisma/nestjs/config.json +28 -0
- package/templates/modules/prisma/nestjs/prisma/schema.prisma +23 -0
- package/templates/modules/prisma/nestjs/prisma.config.ts +12 -0
- package/templates/modules/prisma/nestjs/src/prisma/prisma.module.ts +11 -0
- package/templates/modules/prisma/nestjs/src/prisma/prisma.service.ts +17 -0
- package/templates/modules/prisma/nextjs/config.json +29 -29
- package/templates/modules/prisma/nextjs/prisma/schema.prisma.hbs +91 -91
- package/templates/modules/prisma/tanstack/config.json +5 -5
- package/dist/intro.d.ts +0 -2
- package/dist/intro.d.ts.map +0 -1
- package/dist/intro.js +0 -27
- package/dist/intro.js.map +0 -1
- package/templates/backend/express/.eslintrc.js +0 -24
package/README.md
CHANGED
|
@@ -1,82 +1,113 @@
|
|
|
1
|
-
# better-ts-stack
|
|
2
|
-
|
|
3
|
-
>
|
|
4
|
-
|
|
5
|
-
`better-ts-stack` creates an Express, Next.js, or TanStack Start project with TypeScript, ESLint, and Prettier set up. Database, authentication, Docker, and git are optional.
|
|
6
|
-
|
|
7
|
-
## Quick Start
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
# Run instantly with npx
|
|
11
|
-
npx better-ts-stack
|
|
12
|
-
|
|
13
|
-
# Or install globally
|
|
14
|
-
npm install -g better-ts-stack
|
|
15
|
-
better-ts-stack
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
Run the command and answer the prompts. The CLI creates the project folder.
|
|
19
|
-
|
|
20
|
-
##
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
1
|
+
# better-ts-stack
|
|
2
|
+
|
|
3
|
+
> A CLI that scaffolds TypeScript backend and full-stack projects.
|
|
4
|
+
|
|
5
|
+
`better-ts-stack` creates an Express, NestJS, Next.js, or TanStack Start project with TypeScript, ESLint, and Prettier set up. Database, authentication, Docker, and git are optional.
|
|
6
|
+
|
|
7
|
+
## Quick Start
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Run instantly with npx
|
|
11
|
+
npx better-ts-stack
|
|
12
|
+
|
|
13
|
+
# Or install globally
|
|
14
|
+
npm install -g better-ts-stack
|
|
15
|
+
better-ts-stack
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Run the command and answer the prompts. The CLI creates the project folder.
|
|
19
|
+
|
|
20
|
+
## Flags
|
|
21
|
+
|
|
22
|
+
Every prompt has a flag. Options you leave out are asked interactively, unless you pass `--yes`.
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# No prompts at all
|
|
26
|
+
npx better-ts-stack my-api --framework nestjs --database prisma --auth --yes
|
|
27
|
+
|
|
28
|
+
# Create the project in the current (empty) directory
|
|
29
|
+
npx better-ts-stack . --framework nextjs --database drizzle --pm pnpm
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
| Flag | Values |
|
|
33
|
+
| ---------------------------- | -------------------------------------------- |
|
|
34
|
+
| `--framework <name>` | `express`, `nestjs`, `nextjs`, `tanstack` |
|
|
35
|
+
| `--database <name>` | `none`, `prisma`, `drizzle`, `mongoose` |
|
|
36
|
+
| `--pm <name>` | `npm`, `pnpm`, `bun` |
|
|
37
|
+
| `--auth` / `--no-auth` | Add authentication |
|
|
38
|
+
| `--docker` / `--no-docker` | Add Docker files |
|
|
39
|
+
| `--git` / `--no-git` | Initialize a git repository |
|
|
40
|
+
| `--install` / `--no-install` | Install dependencies |
|
|
41
|
+
| `-y`, `--yes` | Use defaults for missing options, no prompts |
|
|
42
|
+
| `--dry-run` | Show the summary without writing files |
|
|
43
|
+
| `-h`, `--help` | Show help |
|
|
44
|
+
| `-v`, `--version` | Show the version |
|
|
45
|
+
|
|
46
|
+
`--database` names the ORM, which also selects the database: `prisma` and `drizzle` use PostgreSQL, `mongoose` uses MongoDB.
|
|
47
|
+
|
|
48
|
+
With `--yes`, the defaults are Express, no database, no auth, no Docker, npm, git initialized, and dependencies not installed.
|
|
49
|
+
|
|
50
|
+
The project path can be a name (`my-app`), a nested path (`apps/api`), or `.` for the current directory.
|
|
51
|
+
|
|
52
|
+
## What It Can Scaffold
|
|
53
|
+
|
|
54
|
+
| Project type | Stack | Optional setup |
|
|
55
|
+
| -------------- | --------------------------------------- | ------------------------------------------------------------------------ |
|
|
56
|
+
| Backend API | Express 5 or NestJS 12 + TypeScript | PostgreSQL, MongoDB, Prisma, Drizzle, Mongoose, JWT auth, Docker, git |
|
|
57
|
+
| Full-stack app | Next.js 16 or TanStack Start + React 19 | PostgreSQL, MongoDB, Prisma, Drizzle, Mongoose, Better Auth, Docker, git |
|
|
58
|
+
|
|
59
|
+
Notes:
|
|
60
|
+
|
|
61
|
+
- Better Auth is only offered for full-stack projects that use a database.
|
|
62
|
+
|
|
63
|
+
## Interactive Prompt Flow
|
|
64
|
+
|
|
65
|
+
Without flags, the CLI asks, in order:
|
|
66
|
+
|
|
67
|
+
1. Project name or path
|
|
68
|
+
2. Application type: `Backend API` or `Full-stack App`
|
|
69
|
+
3. Framework
|
|
70
|
+
- Backend: `Express` or `NestJS`
|
|
71
|
+
- Full-stack: `Next.js` or `TanStack Start`
|
|
72
|
+
4. Database: `none`, `PostgreSQL`, or `MongoDB`
|
|
73
|
+
5. ORM/ODM when a database is selected
|
|
74
|
+
- PostgreSQL: `Prisma` or `Drizzle`
|
|
75
|
+
- MongoDB: `Mongoose`
|
|
76
|
+
6. Package manager: `npm`, `pnpm`, or `bun`
|
|
77
|
+
7. Docker setup
|
|
78
|
+
8. Authentication
|
|
79
|
+
- Express and NestJS apps: JWT-based auth
|
|
80
|
+
- Next.js and TanStack Start apps: Better Auth, only when a database is selected
|
|
81
|
+
9. Git initialization
|
|
82
|
+
10. Dependency installation
|
|
83
|
+
|
|
84
|
+
The CLI does not ask for a port. Backend projects default to `PORT=3000`.
|
|
85
|
+
|
|
86
|
+
## What You Get
|
|
87
|
+
|
|
88
|
+
Every generated project includes:
|
|
89
|
+
|
|
90
|
+
- TypeScript with strict mode enabled
|
|
91
|
+
- ESLint and Prettier pre-configured
|
|
92
|
+
- `.env.example` and `.env` setup
|
|
93
|
+
- Ready-to-run project scripts
|
|
94
|
+
- Health check endpoint at `/health` for backend projects
|
|
95
|
+
- shadcn-compatible UI components for Next.js and TanStack Start projects
|
|
96
|
+
- Database wiring and schema setup when selected
|
|
97
|
+
- Authentication scaffolding when selected
|
|
98
|
+
- Docker files when selected
|
|
99
|
+
- Optional git repository initialization
|
|
100
|
+
|
|
101
|
+
## Requirements
|
|
102
|
+
|
|
103
|
+
- Node.js 24 or later
|
|
104
|
+
|
|
105
|
+
## Links
|
|
106
|
+
|
|
107
|
+
- [Documentation](https://better-ts-stack.abdullahtech.me/docs)
|
|
108
|
+
- [GitHub Repository](https://github.com/Abdullah-dev0/better-ts-stack)
|
|
109
|
+
- [Issue Tracker](https://github.com/Abdullah-dev0/better-ts-stack/issues)
|
|
110
|
+
|
|
111
|
+
## License
|
|
112
|
+
|
|
113
|
+
MIT
|
package/dist/args.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { StackChoices } from "./types";
|
|
2
|
+
export declare const HELP_TEXT: string;
|
|
3
|
+
export interface CliArgs {
|
|
4
|
+
projectPath?: string;
|
|
5
|
+
choices: Partial<StackChoices>;
|
|
6
|
+
yes: boolean;
|
|
7
|
+
dryRun: boolean;
|
|
8
|
+
help: boolean;
|
|
9
|
+
version: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function parseCliArgs(argv: string[]): CliArgs;
|
|
12
|
+
//# sourceMappingURL=args.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAGA,OAAO,EAQL,YAAY,EACb,MAAM,SAAS,CAAC;AAWjB,eAAO,MAAM,SAAS,QAmBrB,CAAC;AAEF,MAAM,WAAW,OAAO;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAiBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAsDpD"}
|
package/dist/args.js
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HELP_TEXT = void 0;
|
|
4
|
+
exports.parseCliArgs = parseCliArgs;
|
|
5
|
+
// Command-line flag parsing; every flag is optional and falls back to a prompt
|
|
6
|
+
const node_util_1 = require("node:util");
|
|
7
|
+
const types_1 = require("./types");
|
|
8
|
+
const FRAMEWORKS = [
|
|
9
|
+
...types_1.backendFrameworkOptions,
|
|
10
|
+
...types_1.frontendFrameworkOptions,
|
|
11
|
+
].map((option) => option.value);
|
|
12
|
+
const DATABASES = ["none", "prisma", "drizzle", "mongoose"];
|
|
13
|
+
const PACKAGE_MANAGERS = types_1.packageManagerOptions.map((option) => option.value);
|
|
14
|
+
exports.HELP_TEXT = `Usage: better-ts-stack [project-path] [options]
|
|
15
|
+
|
|
16
|
+
Options left out are asked interactively, unless --yes is given.
|
|
17
|
+
|
|
18
|
+
--framework <name> ${FRAMEWORKS.join(" | ")}
|
|
19
|
+
--database <name> ${DATABASES.join(" | ")}
|
|
20
|
+
--pm <name> ${PACKAGE_MANAGERS.join(" | ")}
|
|
21
|
+
--auth, --no-auth Add authentication
|
|
22
|
+
--docker, --no-docker Add Docker files
|
|
23
|
+
--git, --no-git Initialize a git repository
|
|
24
|
+
--install, --no-install Install dependencies
|
|
25
|
+
-y, --yes Use defaults for missing options and skip confirmation
|
|
26
|
+
--dry-run Show what would be created without writing files
|
|
27
|
+
-h, --help Show this help
|
|
28
|
+
-v, --version Show the version
|
|
29
|
+
|
|
30
|
+
Examples:
|
|
31
|
+
better-ts-stack my-api --framework nestjs --database prisma --auth --yes
|
|
32
|
+
better-ts-stack . --framework nextjs --database drizzle --pm pnpm
|
|
33
|
+
`;
|
|
34
|
+
function parseChoice(flag, value, allowed) {
|
|
35
|
+
if (value === undefined)
|
|
36
|
+
return undefined;
|
|
37
|
+
if (!allowed.includes(value)) {
|
|
38
|
+
throw (0, types_1.buildError)(`Invalid value "${value}" for --${flag}. Use one of: ${allowed.join(", ")}`, "INVALID_ARGUMENT");
|
|
39
|
+
}
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
function parseCliArgs(argv) {
|
|
43
|
+
let parsed;
|
|
44
|
+
try {
|
|
45
|
+
parsed = (0, node_util_1.parseArgs)({
|
|
46
|
+
args: argv,
|
|
47
|
+
allowPositionals: true,
|
|
48
|
+
allowNegative: true,
|
|
49
|
+
options: {
|
|
50
|
+
framework: { type: "string" },
|
|
51
|
+
database: { type: "string" },
|
|
52
|
+
pm: { type: "string" },
|
|
53
|
+
auth: { type: "boolean" },
|
|
54
|
+
docker: { type: "boolean" },
|
|
55
|
+
git: { type: "boolean" },
|
|
56
|
+
install: { type: "boolean" },
|
|
57
|
+
yes: { type: "boolean", short: "y" },
|
|
58
|
+
"dry-run": { type: "boolean" },
|
|
59
|
+
help: { type: "boolean", short: "h" },
|
|
60
|
+
version: { type: "boolean", short: "v" },
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
throw (0, types_1.buildError)(error, "INVALID_ARGUMENT");
|
|
66
|
+
}
|
|
67
|
+
const { values, positionals } = parsed;
|
|
68
|
+
if (positionals.length > 1) {
|
|
69
|
+
throw (0, types_1.buildError)(`Expected one project path, got: ${positionals.join(" ")}`, "INVALID_ARGUMENT");
|
|
70
|
+
}
|
|
71
|
+
const choices = {
|
|
72
|
+
framework: parseChoice("framework", values.framework, FRAMEWORKS),
|
|
73
|
+
database: parseChoice("database", values.database, DATABASES),
|
|
74
|
+
packageManager: parseChoice("pm", values.pm, PACKAGE_MANAGERS),
|
|
75
|
+
useAuth: values.auth,
|
|
76
|
+
useDocker: values.docker,
|
|
77
|
+
initGit: values.git,
|
|
78
|
+
installDeps: values.install,
|
|
79
|
+
};
|
|
80
|
+
return {
|
|
81
|
+
projectPath: positionals[0],
|
|
82
|
+
// Keep only the flags that were passed, so the rest can take defaults
|
|
83
|
+
choices: Object.fromEntries(Object.entries(choices).filter(([, value]) => value !== undefined)),
|
|
84
|
+
yes: values.yes ?? false,
|
|
85
|
+
dryRun: values["dry-run"] ?? false,
|
|
86
|
+
help: values.help ?? false,
|
|
87
|
+
version: values.version ?? false,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=args.js.map
|
package/dist/args.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configGenerator.d.ts","sourceRoot":"","sources":["../../src/builder/configGenerator.ts"],"names":[],"mappings":"AAMA,OAAO,
|
|
1
|
+
{"version":3,"file":"configGenerator.d.ts","sourceRoot":"","sources":["../../src/builder/configGenerator.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,eAAe,EAChB,MAAM,UAAU,CAAC;AAYlB,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,EAAE,eAAe,GACvB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmBxB;AAGD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,EAAE,eAAe,GACvB,YAAY,CAuBd;AAGD,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CA4Cf;AAcD,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC,CAkCf;AAGD,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAgCf"}
|
|
@@ -14,6 +14,13 @@ const handlebars_1 = __importDefault(require("handlebars"));
|
|
|
14
14
|
const node_crypto_1 = require("node:crypto");
|
|
15
15
|
const path_1 = __importDefault(require("path"));
|
|
16
16
|
const types_1 = require("../types");
|
|
17
|
+
// Frameworks whose generated project uses ES modules
|
|
18
|
+
const ESM_FRAMEWORKS = ["tanstack", "nestjs"];
|
|
19
|
+
// Compiled entry file of each backend framework
|
|
20
|
+
const BACKEND_ENTRY_FILES = {
|
|
21
|
+
express: "dist/index.js",
|
|
22
|
+
nestjs: "dist/main.js",
|
|
23
|
+
};
|
|
17
24
|
// Replaces Handlebars variables within script command strings
|
|
18
25
|
function processScriptVariables(scripts, context) {
|
|
19
26
|
const processedScripts = {};
|
|
@@ -67,14 +74,14 @@ async function generatePackageJson(targetDir, mergedConfig, config) {
|
|
|
67
74
|
node: config.framework === "tanstack" ? ">=24.20.0" : ">=24.0.0",
|
|
68
75
|
},
|
|
69
76
|
description: `Project created with better-ts-stack using ${config.database !== "none" ? config.database : "no database"}`,
|
|
70
|
-
...(config.framework
|
|
71
|
-
...(isFullstack ? {} : { main:
|
|
77
|
+
...(ESM_FRAMEWORKS.includes(config.framework) ? { type: "module" } : {}),
|
|
78
|
+
...(isFullstack ? {} : { main: BACKEND_ENTRY_FILES[config.framework] }),
|
|
72
79
|
scripts: mergedConfig.scripts,
|
|
73
80
|
keywords: isFullstack
|
|
74
81
|
? config.framework === "tanstack"
|
|
75
82
|
? ["tanstack-start", "react", "typescript"]
|
|
76
83
|
: ["nextjs", "react", "typescript"]
|
|
77
|
-
: ["backend", "typescript",
|
|
84
|
+
: ["backend", "typescript", config.framework],
|
|
78
85
|
author: "",
|
|
79
86
|
license: "MIT",
|
|
80
87
|
dependencies: mergedConfig.dependencies,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configGenerator.js","sourceRoot":"","sources":["../../src/builder/configGenerator.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"configGenerator.js","sourceRoot":"","sources":["../../src/builder/configGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependencyInstaller.d.ts","sourceRoot":"","sources":["../../src/builder/dependencyInstaller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dependencyInstaller.d.ts","sourceRoot":"","sources":["../../src/builder/dependencyInstaller.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI/C,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,cAAc,EAC9B,GAAG,EAAE,MAAM,GACV,OAAO,CAkBT"}
|
|
@@ -1,29 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.installDependencies = installDependencies;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
4
|
+
const node_child_process_1 = require("node:child_process");
|
|
5
|
+
const ui_1 = require("../ui");
|
|
9
6
|
// Installs project dependencies in the target directory
|
|
10
7
|
function installDependencies(packageManager, cwd) {
|
|
11
8
|
const command = `${packageManager} install`;
|
|
12
|
-
|
|
13
|
-
consola_1.default.debug(`Running: ${command}`);
|
|
9
|
+
(0, ui_1.info)(`Installing dependencies with ${packageManager}`);
|
|
14
10
|
try {
|
|
15
|
-
(0,
|
|
11
|
+
(0, node_child_process_1.execSync)(command, {
|
|
16
12
|
cwd,
|
|
17
13
|
stdio: "inherit", // Show installation progress in real-time
|
|
18
14
|
});
|
|
19
|
-
|
|
15
|
+
(0, ui_1.success)("Dependencies installed");
|
|
20
16
|
return true;
|
|
21
17
|
}
|
|
22
|
-
catch
|
|
23
|
-
//
|
|
24
|
-
|
|
25
|
-
consola_1.default.debug(`Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
26
|
-
consola_1.default.info(`You can install dependencies manually later by running: ${command}`);
|
|
18
|
+
catch {
|
|
19
|
+
// Not fatal: the project is complete and the install can be run later
|
|
20
|
+
(0, ui_1.warn)(`Could not install dependencies. Run "${command}" yourself.`);
|
|
27
21
|
return false;
|
|
28
22
|
}
|
|
29
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependencyInstaller.js","sourceRoot":"","sources":["../../src/builder/dependencyInstaller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dependencyInstaller.js","sourceRoot":"","sources":["../../src/builder/dependencyInstaller.ts"],"names":[],"mappings":";;AAMA,kDAqBC;AA3BD,2DAA8C;AAG9C,8BAA4C;AAE5C,wDAAwD;AACxD,SAAgB,mBAAmB,CACjC,cAA8B,EAC9B,GAAW;IAEX,MAAM,OAAO,GAAG,GAAG,cAAc,UAAU,CAAC;IAE5C,IAAA,SAAI,EAAC,gCAAgC,cAAc,EAAE,CAAC,CAAC;IAEvD,IAAI,CAAC;QACH,IAAA,6BAAQ,EAAC,OAAO,EAAE;YAChB,GAAG;YACH,KAAK,EAAE,SAAS,EAAE,0CAA0C;SAC7D,CAAC,CAAC;QAEH,IAAA,YAAO,EAAC,wBAAwB,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;QACtE,IAAA,SAAI,EAAC,wCAAwC,OAAO,aAAa,CAAC,CAAC;QACnE,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitInitializer.d.ts","sourceRoot":"","sources":["../../src/builder/gitInitializer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gitInitializer.d.ts","sourceRoot":"","sources":["../../src/builder/gitInitializer.ts"],"names":[],"mappings":"AAKA,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAU5D"}
|
|
@@ -1,52 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.initializeGitRepository = initializeGitRepository;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
//
|
|
10
|
-
function
|
|
11
|
-
try {
|
|
12
|
-
(0, child_process_1.execSync)("git --version", { stdio: "ignore" });
|
|
13
|
-
return true;
|
|
14
|
-
}
|
|
15
|
-
catch {
|
|
16
|
-
consola_1.default.warn("Git is not installed or not available in PATH");
|
|
17
|
-
return false;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
// Initializes a new git repository in the given directory
|
|
21
|
-
function initGit(cwd) {
|
|
22
|
-
consola_1.default.info("Initializing git repository...");
|
|
4
|
+
const node_child_process_1 = require("node:child_process");
|
|
5
|
+
const ui_1 = require("../ui");
|
|
6
|
+
// Initializes a git repository in the given directory
|
|
7
|
+
function initializeGitRepository(cwd) {
|
|
23
8
|
try {
|
|
24
|
-
(0,
|
|
25
|
-
|
|
26
|
-
stdio: "ignore",
|
|
27
|
-
});
|
|
28
|
-
consola_1.default.success("Git repository initialized");
|
|
9
|
+
(0, node_child_process_1.execSync)("git init", { cwd, stdio: "ignore" });
|
|
10
|
+
(0, ui_1.success)("Git repository initialized");
|
|
29
11
|
return true;
|
|
30
12
|
}
|
|
31
13
|
catch {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
// Coordinates the git initialization process
|
|
37
|
-
function initializeGitRepository(cwd) {
|
|
38
|
-
// Check if git is available
|
|
39
|
-
if (!isGitAvailable()) {
|
|
40
|
-
consola_1.default.warn("Git is not installed or not available in PATH");
|
|
41
|
-
consola_1.default.info("Skipping git initialization. You can initialize git manually later.");
|
|
42
|
-
return false;
|
|
43
|
-
}
|
|
44
|
-
// Initialize git repository
|
|
45
|
-
const gitInitSuccess = initGit(cwd);
|
|
46
|
-
if (!gitInitSuccess) {
|
|
47
|
-
consola_1.default.info("Continuing with building...");
|
|
14
|
+
// Not fatal: git may not be installed
|
|
15
|
+
(0, ui_1.warn)('Could not initialize git. Run "git init" yourself.');
|
|
48
16
|
return false;
|
|
49
17
|
}
|
|
50
|
-
return true;
|
|
51
18
|
}
|
|
52
19
|
//# sourceMappingURL=gitInitializer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitInitializer.js","sourceRoot":"","sources":["../../src/builder/gitInitializer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gitInitializer.js","sourceRoot":"","sources":["../../src/builder/gitInitializer.ts"],"names":[],"mappings":";;AAKA,0DAUC;AAfD,2DAA8C;AAE9C,8BAAsC;AAEtC,sDAAsD;AACtD,SAAgB,uBAAuB,CAAC,GAAW;IACjD,IAAI,CAAC;QACH,IAAA,6BAAQ,EAAC,UAAU,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC/C,IAAA,YAAO,EAAC,4BAA4B,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,sCAAsC;QACtC,IAAA,SAAI,EAAC,oDAAoD,CAAC,CAAC;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/builder/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/builder/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAc,WAAW,EAAU,aAAa,EAAE,MAAM,UAAU,CAAC;AAe1E,wBAAsB,KAAK,CACzB,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,CAAC,CA2FtB"}
|