nodejs-quickstart-structure 1.11.0 → 1.12.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/CHANGELOG.md +13 -0
- package/README.md +3 -3
- package/bin/index.js +2 -2
- package/docs/generateCase.md +245 -165
- package/lib/generator.js +8 -2
- package/lib/modules/app-setup.js +24 -0
- package/lib/modules/config-files.js +18 -1
- package/lib/modules/kafka-setup.js +2 -35
- package/package.json +1 -1
- package/templates/clean-architecture/js/src/errors/BadRequestError.js +1 -1
- package/templates/clean-architecture/js/src/errors/NotFoundError.js +1 -1
- package/templates/clean-architecture/js/src/index.js.ejs +2 -4
- package/templates/clean-architecture/js/src/infrastructure/config/env.js.ejs +47 -0
- package/templates/clean-architecture/js/src/infrastructure/webserver/middlewares/error.middleware.js +2 -1
- package/templates/clean-architecture/js/src/infrastructure/webserver/server.js.ejs +5 -2
- package/templates/clean-architecture/js/src/interfaces/graphql/resolvers/user.resolvers.js.ejs +4 -1
- package/templates/clean-architecture/ts/src/config/env.ts.ejs +46 -0
- package/templates/clean-architecture/ts/src/index.ts.ejs +9 -12
- package/templates/clean-architecture/ts/src/interfaces/graphql/resolvers/user.resolvers.ts.ejs +4 -1
- package/templates/clean-architecture/ts/src/utils/error.middleware.ts.ejs +2 -1
- package/templates/common/.env.example.ejs +3 -1
- package/templates/common/README.md.ejs +30 -0
- package/templates/common/database/js/mongoose.js.ejs +3 -1
- package/templates/common/database/ts/mongoose.ts.ejs +3 -1
- package/templates/common/docker-compose.yml.ejs +11 -1
- package/templates/common/ecosystem.config.js.ejs +40 -0
- package/templates/common/package.json.ejs +3 -1
- package/templates/mvc/js/src/config/env.js.ejs +46 -0
- package/templates/mvc/js/src/errors/BadRequestError.js +1 -1
- package/templates/mvc/js/src/errors/NotFoundError.js +1 -1
- package/templates/mvc/js/src/graphql/resolvers/user.resolvers.js.ejs +4 -1
- package/templates/mvc/js/src/index.js.ejs +2 -2
- package/templates/mvc/js/src/utils/error.middleware.js +2 -1
- package/templates/mvc/ts/src/config/env.ts.ejs +45 -0
- package/templates/mvc/ts/src/graphql/resolvers/user.resolvers.ts.ejs +4 -1
- package/templates/mvc/ts/src/index.ts.ejs +8 -12
- package/templates/mvc/ts/src/utils/error.middleware.ts.ejs +2 -1
- package/templates/clean-architecture/js/src/domain/repositories/UserRepository.js +0 -9
- /package/templates/clean-architecture/ts/src/infrastructure/repositories/{userRepository.ts.ejs → UserRepository.ts.ejs} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,19 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.12.0] - 2026-03-04
|
|
9
|
+
### Added
|
|
10
|
+
- **Zod Environment Validation:** Replaced manual `dotenv` process calls in server entry points with a centralized schema parser.
|
|
11
|
+
- Automatically generates `src/config/env.ts` (or `.js`) evaluating `NODE_ENV`, `PORT`, and strictly mapping database, cache, and Kafka connection definitions gracefully crashing the app at startup if missing.
|
|
12
|
+
- **PM2 Deployment Configuration:** Natively supports PM2 ecosystem clustering for VPS and EC2 configurations out-of-the-box.
|
|
13
|
+
- Generates `ecosystem.config.js` intelligently mapping dynamic environments for Redis, Databases, and Kafka without user prompts.
|
|
14
|
+
- Modifies `package.json` with an out-of-the-box `npm run deploy` script bound to `pm2 start ecosystem.config.js --env production`.
|
|
15
|
+
- Upgraded generated README deployment guides for transparent CLI instruction workflows outlining the contrast between running Docker vs PM2.
|
|
16
|
+
|
|
17
|
+
## [1.11.1] - 2026-03-03
|
|
18
|
+
### Fixed
|
|
19
|
+
- Fixed relative import paths in Clean Architecture JS `error.middleware.js` — changed to correct 3-level relative paths (`../../../`).
|
|
20
|
+
|
|
8
21
|
## [1.11.0] - 2026-03-02
|
|
9
22
|
### Added
|
|
10
23
|
- **Centralized Error Handling Mechanism:** All generated projects now include a standardized, predictable error response structure for both REST APIs and GraphQL communication types.
|
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@ A powerful CLI tool to scaffold production-ready Node.js microservices with buil
|
|
|
19
19
|
- **Database Integration**: Pre-configured setup for **MySQL**, **PostgreSQL**, or **MongoDB**.
|
|
20
20
|
- **Communication Flow**: Scaffold APIs using **REST**, **GraphQL** (with Apollo Server), or **Kafka** (event-driven).
|
|
21
21
|
- **Caching Layer**: Choose between **Redis** or built-in **Memory Cache** for data caching.
|
|
22
|
-
- **Centralized Error Handling**: Every project ships with a global error handler, custom error classes
|
|
22
|
+
- **Centralized Error Handling**: Every project ships with a global error handler, custom error classes and structured JSON error responses — consistent across REST & GraphQL.
|
|
23
23
|
- **Dockerized**: Automatically generates `docker-compose.yml` for DB, Kafka, Redis, and Zookeeper.
|
|
24
24
|
- **Database Migrations/Schemas**: Integrated **Flyway** for SQL migrations or **Mongoose** schemas for MongoDB.
|
|
25
25
|
- **Professional Standards**: Generated projects come with highly professional, industry-standard tooling.
|
|
@@ -30,11 +30,12 @@ We don't just generate boilerplate; we generate **production-ready** foundations
|
|
|
30
30
|
|
|
31
31
|
- **🔍 Code Quality**: Pre-configured `Eslint` and `Prettier` for consistent coding standards.
|
|
32
32
|
- **🛡️ Security**: Built-in `Helmet`, `HPP`, `CORS`, and Rate-Limiting middleware.
|
|
33
|
-
- **🚨 Error Handling**: Centralized global error middleware with custom error classes and structured
|
|
33
|
+
- **🚨 Error Handling**: Centralized global error middleware with custom error classes and structured JSON responses. GraphQL uses Apollo's `formatError` hook; REST uses Express error middleware.
|
|
34
34
|
- **🧪 Testing Strategy**: Integrated `Jest` and `Supertest` setup for Unit and Integration testing.
|
|
35
35
|
- **🔄 CI/CD Integration**: Pre-configured workflows for **GitHub Actions**, **Jenkins**, and **GitLab CI**.
|
|
36
36
|
- **⚓ Git Hooks**: `Husky` and `Lint-Staged` to ensure no bad code is ever committed.
|
|
37
37
|
- **🐳 DevOps**: Highly optimized **Multi-Stage Dockerfile** for small, secure production images.
|
|
38
|
+
- **🚀 Deployment**: Ship confidently with an integrated **PM2 Ecosystem Configuration** for zero-downtime reloads and robust process management.
|
|
38
39
|
|
|
39
40
|
## 🧩 240+ Project Combinations
|
|
40
41
|
|
|
@@ -92,7 +93,6 @@ The generated project will include:
|
|
|
92
93
|
|
|
93
94
|
- `src/`: Source code (controllers, routes, services/use-cases).
|
|
94
95
|
- `src/errors/`: Custom error classes — `ApiError`, `NotFoundError`, `BadRequestError`.
|
|
95
|
-
- `src/utils/error.middleware.{ts|js}`: Global Express error handler (logs 500s, returns `{ statusCode, message }`).
|
|
96
96
|
- `flyway/sql/`: SQL migration scripts (if SQL database selected).
|
|
97
97
|
- `docker-compose.yml`: Services configuration for DB, Flyway, and Kafka.
|
|
98
98
|
- `package.json`: Dependencies and scripts (`start`, `dev`, `build`).
|
package/bin/index.js
CHANGED
|
@@ -52,7 +52,7 @@ program
|
|
|
52
52
|
|
|
53
53
|
console.log(chalk.green('\n✔ Project generated successfully!'));
|
|
54
54
|
|
|
55
|
-
let manualStartInstructions = `\
|
|
55
|
+
let manualStartInstructions = `\n${chalk.yellow('Development:')}\n cd ${answers.projectName}\n npm install`;
|
|
56
56
|
|
|
57
57
|
const needsInfrastructure = answers.database !== 'None' || answers.caching === 'Redis' || answers.communication === 'Kafka';
|
|
58
58
|
|
|
@@ -67,7 +67,7 @@ program
|
|
|
67
67
|
manualStartInstructions += `\n npm run dev`;
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
console.log(chalk.cyan(`\nNext steps:\n cd ${answers.projectName}\n npm install\n docker-compose up\n-----------------------${manualStartInstructions}`));
|
|
70
|
+
console.log(chalk.cyan(`\nNext steps:\n cd ${answers.projectName}\n npm install\n docker-compose up\n-----------------------${manualStartInstructions}\n\n${chalk.yellow('Production (PM2):')}\n npm run build\n npm run deploy\n npx pm2 logs`));
|
|
71
71
|
|
|
72
72
|
} catch (error) {
|
|
73
73
|
console.error(chalk.red('Error generating project:'), error);
|
package/docs/generateCase.md
CHANGED
|
@@ -1,185 +1,265 @@
|
|
|
1
1
|
# NodeJS Quickstart Generator - Test Cases
|
|
2
2
|
|
|
3
|
-
This document lists the **
|
|
3
|
+
This document lists the **240 possible project combinations** supported by the `nodejs-quickstart` CLI. These combinations cover all supported languages, architectures, databases, communication patterns, and caching options.
|
|
4
4
|
|
|
5
5
|
## Summary
|
|
6
6
|
- **CI Providers**: `None`, `GitHub Actions`, `Jenkins`, `GitLab CI`
|
|
7
|
-
- **MVC Architecture**:
|
|
8
|
-
- **Clean Architecture**:
|
|
7
|
+
- **MVC Architecture**: 180 Combinations
|
|
8
|
+
- **Clean Architecture**: 60 Combinations
|
|
9
9
|
|
|
10
|
-
**Total Core Combinations:
|
|
10
|
+
**Total Core Combinations: 240**
|
|
11
11
|
|
|
12
12
|
> **Note on CI/CD**: Each combination can be generated with or without CI/CD (`--ci-provider`), effectively doubling the state space.
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
16
|
-
## 1. MVC Architecture (
|
|
16
|
+
## 1. MVC Architecture (180 Cases)
|
|
17
17
|
|
|
18
18
|
| # | Language | Architecture | View Engine | Database | Communication | Caching |
|
|
19
19
|
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
|
|
20
20
|
| 1 | TypeScript | MVC | EJS | None | REST APIs | None |
|
|
21
|
-
| 2 | TypeScript | MVC | EJS | None |
|
|
22
|
-
| 3 | TypeScript | MVC | EJS |
|
|
23
|
-
| 4 | TypeScript | MVC | EJS | MySQL | REST APIs |
|
|
24
|
-
| 5 | TypeScript | MVC | EJS | MySQL | REST APIs |
|
|
25
|
-
| 6 | TypeScript | MVC | EJS | MySQL |
|
|
26
|
-
| 7 | TypeScript | MVC | EJS | MySQL |
|
|
27
|
-
| 8 | TypeScript | MVC | EJS | MySQL |
|
|
28
|
-
| 9 | TypeScript | MVC | EJS |
|
|
29
|
-
| 10 | TypeScript | MVC | EJS |
|
|
30
|
-
| 11 | TypeScript | MVC | EJS |
|
|
31
|
-
| 12 | TypeScript | MVC | EJS |
|
|
32
|
-
| 13 | TypeScript | MVC | EJS | PostgreSQL |
|
|
33
|
-
| 14 | TypeScript | MVC | EJS | PostgreSQL |
|
|
34
|
-
| 15 | TypeScript | MVC | EJS |
|
|
35
|
-
| 16 | TypeScript | MVC | EJS |
|
|
36
|
-
| 17 | TypeScript | MVC | EJS |
|
|
37
|
-
| 18 | TypeScript | MVC | EJS |
|
|
38
|
-
| 19 | TypeScript | MVC | EJS |
|
|
39
|
-
| 20 | TypeScript | MVC | EJS |
|
|
40
|
-
| 21 | TypeScript | MVC |
|
|
41
|
-
| 22 | TypeScript | MVC |
|
|
42
|
-
| 23 | TypeScript | MVC |
|
|
43
|
-
| 24 | TypeScript | MVC |
|
|
44
|
-
| 25 | TypeScript | MVC |
|
|
45
|
-
| 26 | TypeScript | MVC |
|
|
46
|
-
| 27 | TypeScript | MVC |
|
|
47
|
-
| 28 | TypeScript | MVC |
|
|
48
|
-
| 29 | TypeScript | MVC |
|
|
49
|
-
| 30 | TypeScript | MVC |
|
|
50
|
-
| 31 | TypeScript | MVC | Pug |
|
|
51
|
-
| 32 | TypeScript | MVC | Pug |
|
|
52
|
-
| 33 | TypeScript | MVC | Pug |
|
|
53
|
-
| 34 | TypeScript | MVC | Pug |
|
|
54
|
-
| 35 | TypeScript | MVC | Pug |
|
|
55
|
-
| 36 | TypeScript | MVC | Pug |
|
|
56
|
-
| 37 | TypeScript | MVC | Pug |
|
|
57
|
-
| 38 | TypeScript | MVC | Pug |
|
|
58
|
-
| 39 | TypeScript | MVC | Pug |
|
|
59
|
-
| 40 | TypeScript | MVC | Pug |
|
|
60
|
-
| 41 | TypeScript | MVC |
|
|
61
|
-
| 42 | TypeScript | MVC |
|
|
62
|
-
| 43 | TypeScript | MVC |
|
|
63
|
-
| 44 | TypeScript | MVC |
|
|
64
|
-
| 45 | TypeScript | MVC |
|
|
65
|
-
| 46 | TypeScript | MVC |
|
|
66
|
-
| 47 | TypeScript | MVC |
|
|
67
|
-
| 48 | TypeScript | MVC |
|
|
68
|
-
| 49 | TypeScript | MVC |
|
|
69
|
-
| 50 | TypeScript | MVC |
|
|
70
|
-
| 51 | TypeScript | MVC |
|
|
71
|
-
| 52 | TypeScript | MVC |
|
|
72
|
-
| 53 | TypeScript | MVC |
|
|
73
|
-
| 54 | TypeScript | MVC |
|
|
74
|
-
| 55 | TypeScript | MVC |
|
|
75
|
-
| 56 | TypeScript | MVC |
|
|
76
|
-
| 57 | TypeScript | MVC |
|
|
77
|
-
| 58 | TypeScript | MVC |
|
|
78
|
-
| 59 | TypeScript | MVC |
|
|
79
|
-
| 60 | TypeScript | MVC |
|
|
80
|
-
| 61 |
|
|
81
|
-
| 62 |
|
|
82
|
-
| 63 |
|
|
83
|
-
| 64 |
|
|
84
|
-
| 65 |
|
|
85
|
-
| 66 |
|
|
86
|
-
| 67 |
|
|
87
|
-
| 68 |
|
|
88
|
-
| 69 |
|
|
89
|
-
| 70 |
|
|
90
|
-
| 71 |
|
|
91
|
-
| 72 |
|
|
92
|
-
| 73 |
|
|
93
|
-
| 74 |
|
|
94
|
-
| 75 |
|
|
95
|
-
| 76 |
|
|
96
|
-
| 77 |
|
|
97
|
-
| 78 |
|
|
98
|
-
| 79 |
|
|
99
|
-
| 80 |
|
|
100
|
-
| 81 |
|
|
101
|
-
| 82 |
|
|
102
|
-
| 83 |
|
|
103
|
-
| 84 |
|
|
104
|
-
| 85 |
|
|
105
|
-
| 86 |
|
|
106
|
-
| 87 |
|
|
107
|
-
| 88 |
|
|
108
|
-
| 89 |
|
|
109
|
-
| 90 |
|
|
110
|
-
| 91 | JavaScript | MVC |
|
|
111
|
-
| 92 | JavaScript | MVC |
|
|
112
|
-
| 93 | JavaScript | MVC |
|
|
113
|
-
| 94 | JavaScript | MVC |
|
|
114
|
-
| 95 | JavaScript | MVC |
|
|
115
|
-
| 96 | JavaScript | MVC |
|
|
116
|
-
| 97 | JavaScript | MVC |
|
|
117
|
-
| 98 | JavaScript | MVC |
|
|
118
|
-
| 99 | JavaScript | MVC |
|
|
119
|
-
| 100 | JavaScript | MVC |
|
|
120
|
-
| 101 | JavaScript | MVC |
|
|
121
|
-
| 102 | JavaScript | MVC |
|
|
122
|
-
| 103 | JavaScript | MVC |
|
|
123
|
-
| 104 | JavaScript | MVC |
|
|
124
|
-
| 105 | JavaScript | MVC |
|
|
125
|
-
| 106 | JavaScript | MVC |
|
|
126
|
-
| 107 | JavaScript | MVC |
|
|
127
|
-
| 108 | JavaScript | MVC |
|
|
128
|
-
| 109 | JavaScript | MVC |
|
|
129
|
-
| 110 | JavaScript | MVC |
|
|
130
|
-
| 111 | JavaScript | MVC |
|
|
131
|
-
| 112 | JavaScript | MVC |
|
|
132
|
-
| 113 | JavaScript | MVC |
|
|
133
|
-
| 114 | JavaScript | MVC |
|
|
134
|
-
| 115 | JavaScript | MVC |
|
|
135
|
-
| 116 | JavaScript | MVC |
|
|
136
|
-
| 117 | JavaScript | MVC |
|
|
137
|
-
| 118 | JavaScript | MVC |
|
|
138
|
-
| 119 | JavaScript | MVC |
|
|
139
|
-
| 120 | JavaScript | MVC |
|
|
21
|
+
| 2 | TypeScript | MVC | EJS | None | GraphQL | None |
|
|
22
|
+
| 3 | TypeScript | MVC | EJS | None | Kafka | None |
|
|
23
|
+
| 4 | TypeScript | MVC | EJS | MySQL | REST APIs | None |
|
|
24
|
+
| 5 | TypeScript | MVC | EJS | MySQL | REST APIs | Redis |
|
|
25
|
+
| 6 | TypeScript | MVC | EJS | MySQL | REST APIs | Memory Cache |
|
|
26
|
+
| 7 | TypeScript | MVC | EJS | MySQL | GraphQL | None |
|
|
27
|
+
| 8 | TypeScript | MVC | EJS | MySQL | GraphQL | Redis |
|
|
28
|
+
| 9 | TypeScript | MVC | EJS | MySQL | GraphQL | Memory Cache |
|
|
29
|
+
| 10 | TypeScript | MVC | EJS | MySQL | Kafka | None |
|
|
30
|
+
| 11 | TypeScript | MVC | EJS | MySQL | Kafka | Redis |
|
|
31
|
+
| 12 | TypeScript | MVC | EJS | MySQL | Kafka | Memory Cache |
|
|
32
|
+
| 13 | TypeScript | MVC | EJS | PostgreSQL | REST APIs | None |
|
|
33
|
+
| 14 | TypeScript | MVC | EJS | PostgreSQL | REST APIs | Redis |
|
|
34
|
+
| 15 | TypeScript | MVC | EJS | PostgreSQL | REST APIs | Memory Cache |
|
|
35
|
+
| 16 | TypeScript | MVC | EJS | PostgreSQL | GraphQL | None |
|
|
36
|
+
| 17 | TypeScript | MVC | EJS | PostgreSQL | GraphQL | Redis |
|
|
37
|
+
| 18 | TypeScript | MVC | EJS | PostgreSQL | GraphQL | Memory Cache |
|
|
38
|
+
| 19 | TypeScript | MVC | EJS | PostgreSQL | Kafka | None |
|
|
39
|
+
| 20 | TypeScript | MVC | EJS | PostgreSQL | Kafka | Redis |
|
|
40
|
+
| 21 | TypeScript | MVC | EJS | PostgreSQL | Kafka | Memory Cache |
|
|
41
|
+
| 22 | TypeScript | MVC | EJS | MongoDB | REST APIs | None |
|
|
42
|
+
| 23 | TypeScript | MVC | EJS | MongoDB | REST APIs | Redis |
|
|
43
|
+
| 24 | TypeScript | MVC | EJS | MongoDB | REST APIs | Memory Cache |
|
|
44
|
+
| 25 | TypeScript | MVC | EJS | MongoDB | GraphQL | None |
|
|
45
|
+
| 26 | TypeScript | MVC | EJS | MongoDB | GraphQL | Redis |
|
|
46
|
+
| 27 | TypeScript | MVC | EJS | MongoDB | GraphQL | Memory Cache |
|
|
47
|
+
| 28 | TypeScript | MVC | EJS | MongoDB | Kafka | None |
|
|
48
|
+
| 29 | TypeScript | MVC | EJS | MongoDB | Kafka | Redis |
|
|
49
|
+
| 30 | TypeScript | MVC | EJS | MongoDB | Kafka | Memory Cache |
|
|
50
|
+
| 31 | TypeScript | MVC | Pug | None | REST APIs | None |
|
|
51
|
+
| 32 | TypeScript | MVC | Pug | None | GraphQL | None |
|
|
52
|
+
| 33 | TypeScript | MVC | Pug | None | Kafka | None |
|
|
53
|
+
| 34 | TypeScript | MVC | Pug | MySQL | REST APIs | None |
|
|
54
|
+
| 35 | TypeScript | MVC | Pug | MySQL | REST APIs | Redis |
|
|
55
|
+
| 36 | TypeScript | MVC | Pug | MySQL | REST APIs | Memory Cache |
|
|
56
|
+
| 37 | TypeScript | MVC | Pug | MySQL | GraphQL | None |
|
|
57
|
+
| 38 | TypeScript | MVC | Pug | MySQL | GraphQL | Redis |
|
|
58
|
+
| 39 | TypeScript | MVC | Pug | MySQL | GraphQL | Memory Cache |
|
|
59
|
+
| 40 | TypeScript | MVC | Pug | MySQL | Kafka | None |
|
|
60
|
+
| 41 | TypeScript | MVC | Pug | MySQL | Kafka | Redis |
|
|
61
|
+
| 42 | TypeScript | MVC | Pug | MySQL | Kafka | Memory Cache |
|
|
62
|
+
| 43 | TypeScript | MVC | Pug | PostgreSQL | REST APIs | None |
|
|
63
|
+
| 44 | TypeScript | MVC | Pug | PostgreSQL | REST APIs | Redis |
|
|
64
|
+
| 45 | TypeScript | MVC | Pug | PostgreSQL | REST APIs | Memory Cache |
|
|
65
|
+
| 46 | TypeScript | MVC | Pug | PostgreSQL | GraphQL | None |
|
|
66
|
+
| 47 | TypeScript | MVC | Pug | PostgreSQL | GraphQL | Redis |
|
|
67
|
+
| 48 | TypeScript | MVC | Pug | PostgreSQL | GraphQL | Memory Cache |
|
|
68
|
+
| 49 | TypeScript | MVC | Pug | PostgreSQL | Kafka | None |
|
|
69
|
+
| 50 | TypeScript | MVC | Pug | PostgreSQL | Kafka | Redis |
|
|
70
|
+
| 51 | TypeScript | MVC | Pug | PostgreSQL | Kafka | Memory Cache |
|
|
71
|
+
| 52 | TypeScript | MVC | Pug | MongoDB | REST APIs | None |
|
|
72
|
+
| 53 | TypeScript | MVC | Pug | MongoDB | REST APIs | Redis |
|
|
73
|
+
| 54 | TypeScript | MVC | Pug | MongoDB | REST APIs | Memory Cache |
|
|
74
|
+
| 55 | TypeScript | MVC | Pug | MongoDB | GraphQL | None |
|
|
75
|
+
| 56 | TypeScript | MVC | Pug | MongoDB | GraphQL | Redis |
|
|
76
|
+
| 57 | TypeScript | MVC | Pug | MongoDB | GraphQL | Memory Cache |
|
|
77
|
+
| 58 | TypeScript | MVC | Pug | MongoDB | Kafka | None |
|
|
78
|
+
| 59 | TypeScript | MVC | Pug | MongoDB | Kafka | Redis |
|
|
79
|
+
| 60 | TypeScript | MVC | Pug | MongoDB | Kafka | Memory Cache |
|
|
80
|
+
| 61 | TypeScript | MVC | None | None | REST APIs | None |
|
|
81
|
+
| 62 | TypeScript | MVC | None | None | GraphQL | None |
|
|
82
|
+
| 63 | TypeScript | MVC | None | None | Kafka | None |
|
|
83
|
+
| 64 | TypeScript | MVC | None | MySQL | REST APIs | None |
|
|
84
|
+
| 65 | TypeScript | MVC | None | MySQL | REST APIs | Redis |
|
|
85
|
+
| 66 | TypeScript | MVC | None | MySQL | REST APIs | Memory Cache |
|
|
86
|
+
| 67 | TypeScript | MVC | None | MySQL | GraphQL | None |
|
|
87
|
+
| 68 | TypeScript | MVC | None | MySQL | GraphQL | Redis |
|
|
88
|
+
| 69 | TypeScript | MVC | None | MySQL | GraphQL | Memory Cache |
|
|
89
|
+
| 70 | TypeScript | MVC | None | MySQL | Kafka | None |
|
|
90
|
+
| 71 | TypeScript | MVC | None | MySQL | Kafka | Redis |
|
|
91
|
+
| 72 | TypeScript | MVC | None | MySQL | Kafka | Memory Cache |
|
|
92
|
+
| 73 | TypeScript | MVC | None | PostgreSQL | REST APIs | None |
|
|
93
|
+
| 74 | TypeScript | MVC | None | PostgreSQL | REST APIs | Redis |
|
|
94
|
+
| 75 | TypeScript | MVC | None | PostgreSQL | REST APIs | Memory Cache |
|
|
95
|
+
| 76 | TypeScript | MVC | None | PostgreSQL | GraphQL | None |
|
|
96
|
+
| 77 | TypeScript | MVC | None | PostgreSQL | GraphQL | Redis |
|
|
97
|
+
| 78 | TypeScript | MVC | None | PostgreSQL | GraphQL | Memory Cache |
|
|
98
|
+
| 79 | TypeScript | MVC | None | PostgreSQL | Kafka | None |
|
|
99
|
+
| 80 | TypeScript | MVC | None | PostgreSQL | Kafka | Redis |
|
|
100
|
+
| 81 | TypeScript | MVC | None | PostgreSQL | Kafka | Memory Cache |
|
|
101
|
+
| 82 | TypeScript | MVC | None | MongoDB | REST APIs | None |
|
|
102
|
+
| 83 | TypeScript | MVC | None | MongoDB | REST APIs | Redis |
|
|
103
|
+
| 84 | TypeScript | MVC | None | MongoDB | REST APIs | Memory Cache |
|
|
104
|
+
| 85 | TypeScript | MVC | None | MongoDB | GraphQL | None |
|
|
105
|
+
| 86 | TypeScript | MVC | None | MongoDB | GraphQL | Redis |
|
|
106
|
+
| 87 | TypeScript | MVC | None | MongoDB | GraphQL | Memory Cache |
|
|
107
|
+
| 88 | TypeScript | MVC | None | MongoDB | Kafka | None |
|
|
108
|
+
| 89 | TypeScript | MVC | None | MongoDB | Kafka | Redis |
|
|
109
|
+
| 90 | TypeScript | MVC | None | MongoDB | Kafka | Memory Cache |
|
|
110
|
+
| 91 | JavaScript | MVC | EJS | None | REST APIs | None |
|
|
111
|
+
| 92 | JavaScript | MVC | EJS | None | GraphQL | None |
|
|
112
|
+
| 93 | JavaScript | MVC | EJS | None | Kafka | None |
|
|
113
|
+
| 94 | JavaScript | MVC | EJS | MySQL | REST APIs | None |
|
|
114
|
+
| 95 | JavaScript | MVC | EJS | MySQL | REST APIs | Redis |
|
|
115
|
+
| 96 | JavaScript | MVC | EJS | MySQL | REST APIs | Memory Cache |
|
|
116
|
+
| 97 | JavaScript | MVC | EJS | MySQL | GraphQL | None |
|
|
117
|
+
| 98 | JavaScript | MVC | EJS | MySQL | GraphQL | Redis |
|
|
118
|
+
| 99 | JavaScript | MVC | EJS | MySQL | GraphQL | Memory Cache |
|
|
119
|
+
| 100 | JavaScript | MVC | EJS | MySQL | Kafka | None |
|
|
120
|
+
| 101 | JavaScript | MVC | EJS | MySQL | Kafka | Redis |
|
|
121
|
+
| 102 | JavaScript | MVC | EJS | MySQL | Kafka | Memory Cache |
|
|
122
|
+
| 103 | JavaScript | MVC | EJS | PostgreSQL | REST APIs | None |
|
|
123
|
+
| 104 | JavaScript | MVC | EJS | PostgreSQL | REST APIs | Redis |
|
|
124
|
+
| 105 | JavaScript | MVC | EJS | PostgreSQL | REST APIs | Memory Cache |
|
|
125
|
+
| 106 | JavaScript | MVC | EJS | PostgreSQL | GraphQL | None |
|
|
126
|
+
| 107 | JavaScript | MVC | EJS | PostgreSQL | GraphQL | Redis |
|
|
127
|
+
| 108 | JavaScript | MVC | EJS | PostgreSQL | GraphQL | Memory Cache |
|
|
128
|
+
| 109 | JavaScript | MVC | EJS | PostgreSQL | Kafka | None |
|
|
129
|
+
| 110 | JavaScript | MVC | EJS | PostgreSQL | Kafka | Redis |
|
|
130
|
+
| 111 | JavaScript | MVC | EJS | PostgreSQL | Kafka | Memory Cache |
|
|
131
|
+
| 112 | JavaScript | MVC | EJS | MongoDB | REST APIs | None |
|
|
132
|
+
| 113 | JavaScript | MVC | EJS | MongoDB | REST APIs | Redis |
|
|
133
|
+
| 114 | JavaScript | MVC | EJS | MongoDB | REST APIs | Memory Cache |
|
|
134
|
+
| 115 | JavaScript | MVC | EJS | MongoDB | GraphQL | None |
|
|
135
|
+
| 116 | JavaScript | MVC | EJS | MongoDB | GraphQL | Redis |
|
|
136
|
+
| 117 | JavaScript | MVC | EJS | MongoDB | GraphQL | Memory Cache |
|
|
137
|
+
| 118 | JavaScript | MVC | EJS | MongoDB | Kafka | None |
|
|
138
|
+
| 119 | JavaScript | MVC | EJS | MongoDB | Kafka | Redis |
|
|
139
|
+
| 120 | JavaScript | MVC | EJS | MongoDB | Kafka | Memory Cache |
|
|
140
|
+
| 121 | JavaScript | MVC | Pug | None | REST APIs | None |
|
|
141
|
+
| 122 | JavaScript | MVC | Pug | None | GraphQL | None |
|
|
142
|
+
| 123 | JavaScript | MVC | Pug | None | Kafka | None |
|
|
143
|
+
| 124 | JavaScript | MVC | Pug | MySQL | REST APIs | None |
|
|
144
|
+
| 125 | JavaScript | MVC | Pug | MySQL | REST APIs | Redis |
|
|
145
|
+
| 126 | JavaScript | MVC | Pug | MySQL | REST APIs | Memory Cache |
|
|
146
|
+
| 127 | JavaScript | MVC | Pug | MySQL | GraphQL | None |
|
|
147
|
+
| 128 | JavaScript | MVC | Pug | MySQL | GraphQL | Redis |
|
|
148
|
+
| 129 | JavaScript | MVC | Pug | MySQL | GraphQL | Memory Cache |
|
|
149
|
+
| 130 | JavaScript | MVC | Pug | MySQL | Kafka | None |
|
|
150
|
+
| 131 | JavaScript | MVC | Pug | MySQL | Kafka | Redis |
|
|
151
|
+
| 132 | JavaScript | MVC | Pug | MySQL | Kafka | Memory Cache |
|
|
152
|
+
| 133 | JavaScript | MVC | Pug | PostgreSQL | REST APIs | None |
|
|
153
|
+
| 134 | JavaScript | MVC | Pug | PostgreSQL | REST APIs | Redis |
|
|
154
|
+
| 135 | JavaScript | MVC | Pug | PostgreSQL | REST APIs | Memory Cache |
|
|
155
|
+
| 136 | JavaScript | MVC | Pug | PostgreSQL | GraphQL | None |
|
|
156
|
+
| 137 | JavaScript | MVC | Pug | PostgreSQL | GraphQL | Redis |
|
|
157
|
+
| 138 | JavaScript | MVC | Pug | PostgreSQL | GraphQL | Memory Cache |
|
|
158
|
+
| 139 | JavaScript | MVC | Pug | PostgreSQL | Kafka | None |
|
|
159
|
+
| 140 | JavaScript | MVC | Pug | PostgreSQL | Kafka | Redis |
|
|
160
|
+
| 141 | JavaScript | MVC | Pug | PostgreSQL | Kafka | Memory Cache |
|
|
161
|
+
| 142 | JavaScript | MVC | Pug | MongoDB | REST APIs | None |
|
|
162
|
+
| 143 | JavaScript | MVC | Pug | MongoDB | REST APIs | Redis |
|
|
163
|
+
| 144 | JavaScript | MVC | Pug | MongoDB | REST APIs | Memory Cache |
|
|
164
|
+
| 145 | JavaScript | MVC | Pug | MongoDB | GraphQL | None |
|
|
165
|
+
| 146 | JavaScript | MVC | Pug | MongoDB | GraphQL | Redis |
|
|
166
|
+
| 147 | JavaScript | MVC | Pug | MongoDB | GraphQL | Memory Cache |
|
|
167
|
+
| 148 | JavaScript | MVC | Pug | MongoDB | Kafka | None |
|
|
168
|
+
| 149 | JavaScript | MVC | Pug | MongoDB | Kafka | Redis |
|
|
169
|
+
| 150 | JavaScript | MVC | Pug | MongoDB | Kafka | Memory Cache |
|
|
170
|
+
| 151 | JavaScript | MVC | None | None | REST APIs | None |
|
|
171
|
+
| 152 | JavaScript | MVC | None | None | GraphQL | None |
|
|
172
|
+
| 153 | JavaScript | MVC | None | None | Kafka | None |
|
|
173
|
+
| 154 | JavaScript | MVC | None | MySQL | REST APIs | None |
|
|
174
|
+
| 155 | JavaScript | MVC | None | MySQL | REST APIs | Redis |
|
|
175
|
+
| 156 | JavaScript | MVC | None | MySQL | REST APIs | Memory Cache |
|
|
176
|
+
| 157 | JavaScript | MVC | None | MySQL | GraphQL | None |
|
|
177
|
+
| 158 | JavaScript | MVC | None | MySQL | GraphQL | Redis |
|
|
178
|
+
| 159 | JavaScript | MVC | None | MySQL | GraphQL | Memory Cache |
|
|
179
|
+
| 160 | JavaScript | MVC | None | MySQL | Kafka | None |
|
|
180
|
+
| 161 | JavaScript | MVC | None | MySQL | Kafka | Redis |
|
|
181
|
+
| 162 | JavaScript | MVC | None | MySQL | Kafka | Memory Cache |
|
|
182
|
+
| 163 | JavaScript | MVC | None | PostgreSQL | REST APIs | None |
|
|
183
|
+
| 164 | JavaScript | MVC | None | PostgreSQL | REST APIs | Redis |
|
|
184
|
+
| 165 | JavaScript | MVC | None | PostgreSQL | REST APIs | Memory Cache |
|
|
185
|
+
| 166 | JavaScript | MVC | None | PostgreSQL | GraphQL | None |
|
|
186
|
+
| 167 | JavaScript | MVC | None | PostgreSQL | GraphQL | Redis |
|
|
187
|
+
| 168 | JavaScript | MVC | None | PostgreSQL | GraphQL | Memory Cache |
|
|
188
|
+
| 169 | JavaScript | MVC | None | PostgreSQL | Kafka | None |
|
|
189
|
+
| 170 | JavaScript | MVC | None | PostgreSQL | Kafka | Redis |
|
|
190
|
+
| 171 | JavaScript | MVC | None | PostgreSQL | Kafka | Memory Cache |
|
|
191
|
+
| 172 | JavaScript | MVC | None | MongoDB | REST APIs | None |
|
|
192
|
+
| 173 | JavaScript | MVC | None | MongoDB | REST APIs | Redis |
|
|
193
|
+
| 174 | JavaScript | MVC | None | MongoDB | REST APIs | Memory Cache |
|
|
194
|
+
| 175 | JavaScript | MVC | None | MongoDB | GraphQL | None |
|
|
195
|
+
| 176 | JavaScript | MVC | None | MongoDB | GraphQL | Redis |
|
|
196
|
+
| 177 | JavaScript | MVC | None | MongoDB | GraphQL | Memory Cache |
|
|
197
|
+
| 178 | JavaScript | MVC | None | MongoDB | Kafka | None |
|
|
198
|
+
| 179 | JavaScript | MVC | None | MongoDB | Kafka | Redis |
|
|
199
|
+
| 180 | JavaScript | MVC | None | MongoDB | Kafka | Memory Cache |
|
|
140
200
|
|
|
141
|
-
## 2. Clean Architecture (
|
|
201
|
+
## 2. Clean Architecture (60 Cases)
|
|
142
202
|
*Note: Clean Architecture does not use server-side view engines (EJS/Pug).*
|
|
143
203
|
|
|
144
204
|
| # | Language | Architecture | View Engine | Database | Communication | Caching |
|
|
145
205
|
| :--- | :--- | :--- | :--- | :--- | :--- | :--- |
|
|
146
|
-
|
|
|
147
|
-
|
|
|
148
|
-
|
|
|
149
|
-
|
|
|
150
|
-
|
|
|
151
|
-
|
|
|
152
|
-
|
|
|
153
|
-
|
|
|
154
|
-
|
|
|
155
|
-
|
|
|
156
|
-
|
|
|
157
|
-
|
|
|
158
|
-
|
|
|
159
|
-
|
|
|
160
|
-
|
|
|
161
|
-
|
|
|
162
|
-
|
|
|
163
|
-
|
|
|
164
|
-
|
|
|
165
|
-
|
|
|
166
|
-
|
|
|
167
|
-
|
|
|
168
|
-
|
|
|
169
|
-
|
|
|
170
|
-
|
|
|
171
|
-
|
|
|
172
|
-
|
|
|
173
|
-
|
|
|
174
|
-
|
|
|
175
|
-
|
|
|
176
|
-
|
|
|
177
|
-
|
|
|
178
|
-
|
|
|
179
|
-
|
|
|
180
|
-
|
|
|
181
|
-
|
|
|
182
|
-
|
|
|
183
|
-
|
|
|
184
|
-
|
|
|
185
|
-
|
|
|
206
|
+
| 181 | TypeScript | Clean Architecture | N/A | None | REST APIs | None |
|
|
207
|
+
| 182 | TypeScript | Clean Architecture | N/A | None | GraphQL | None |
|
|
208
|
+
| 183 | TypeScript | Clean Architecture | N/A | None | Kafka | None |
|
|
209
|
+
| 184 | TypeScript | Clean Architecture | N/A | MySQL | REST APIs | None |
|
|
210
|
+
| 185 | TypeScript | Clean Architecture | N/A | MySQL | REST APIs | Redis |
|
|
211
|
+
| 186 | TypeScript | Clean Architecture | N/A | MySQL | REST APIs | Memory Cache |
|
|
212
|
+
| 187 | TypeScript | Clean Architecture | N/A | MySQL | GraphQL | None |
|
|
213
|
+
| 188 | TypeScript | Clean Architecture | N/A | MySQL | GraphQL | Redis |
|
|
214
|
+
| 189 | TypeScript | Clean Architecture | N/A | MySQL | GraphQL | Memory Cache |
|
|
215
|
+
| 190 | TypeScript | Clean Architecture | N/A | MySQL | Kafka | None |
|
|
216
|
+
| 191 | TypeScript | Clean Architecture | N/A | MySQL | Kafka | Redis |
|
|
217
|
+
| 192 | TypeScript | Clean Architecture | N/A | MySQL | Kafka | Memory Cache |
|
|
218
|
+
| 193 | TypeScript | Clean Architecture | N/A | PostgreSQL | REST APIs | None |
|
|
219
|
+
| 194 | TypeScript | Clean Architecture | N/A | PostgreSQL | REST APIs | Redis |
|
|
220
|
+
| 195 | TypeScript | Clean Architecture | N/A | PostgreSQL | REST APIs | Memory Cache |
|
|
221
|
+
| 196 | TypeScript | Clean Architecture | N/A | PostgreSQL | GraphQL | None |
|
|
222
|
+
| 197 | TypeScript | Clean Architecture | N/A | PostgreSQL | GraphQL | Redis |
|
|
223
|
+
| 198 | TypeScript | Clean Architecture | N/A | PostgreSQL | GraphQL | Memory Cache |
|
|
224
|
+
| 199 | TypeScript | Clean Architecture | N/A | PostgreSQL | Kafka | None |
|
|
225
|
+
| 200 | TypeScript | Clean Architecture | N/A | PostgreSQL | Kafka | Redis |
|
|
226
|
+
| 201 | TypeScript | Clean Architecture | N/A | PostgreSQL | Kafka | Memory Cache |
|
|
227
|
+
| 202 | TypeScript | Clean Architecture | N/A | MongoDB | REST APIs | None |
|
|
228
|
+
| 203 | TypeScript | Clean Architecture | N/A | MongoDB | REST APIs | Redis |
|
|
229
|
+
| 204 | TypeScript | Clean Architecture | N/A | MongoDB | REST APIs | Memory Cache |
|
|
230
|
+
| 205 | TypeScript | Clean Architecture | N/A | MongoDB | GraphQL | None |
|
|
231
|
+
| 206 | TypeScript | Clean Architecture | N/A | MongoDB | GraphQL | Redis |
|
|
232
|
+
| 207 | TypeScript | Clean Architecture | N/A | MongoDB | GraphQL | Memory Cache |
|
|
233
|
+
| 208 | TypeScript | Clean Architecture | N/A | MongoDB | Kafka | None |
|
|
234
|
+
| 209 | TypeScript | Clean Architecture | N/A | MongoDB | Kafka | Redis |
|
|
235
|
+
| 210 | TypeScript | Clean Architecture | N/A | MongoDB | Kafka | Memory Cache |
|
|
236
|
+
| 211 | JavaScript | Clean Architecture | N/A | None | REST APIs | None |
|
|
237
|
+
| 212 | JavaScript | Clean Architecture | N/A | None | GraphQL | None |
|
|
238
|
+
| 213 | JavaScript | Clean Architecture | N/A | None | Kafka | None |
|
|
239
|
+
| 214 | JavaScript | Clean Architecture | N/A | MySQL | REST APIs | None |
|
|
240
|
+
| 215 | JavaScript | Clean Architecture | N/A | MySQL | REST APIs | Redis |
|
|
241
|
+
| 216 | JavaScript | Clean Architecture | N/A | MySQL | REST APIs | Memory Cache |
|
|
242
|
+
| 217 | JavaScript | Clean Architecture | N/A | MySQL | GraphQL | None |
|
|
243
|
+
| 218 | JavaScript | Clean Architecture | N/A | MySQL | GraphQL | Redis |
|
|
244
|
+
| 219 | JavaScript | Clean Architecture | N/A | MySQL | GraphQL | Memory Cache |
|
|
245
|
+
| 220 | JavaScript | Clean Architecture | N/A | MySQL | Kafka | None |
|
|
246
|
+
| 221 | JavaScript | Clean Architecture | N/A | MySQL | Kafka | Redis |
|
|
247
|
+
| 222 | JavaScript | Clean Architecture | N/A | MySQL | Kafka | Memory Cache |
|
|
248
|
+
| 223 | JavaScript | Clean Architecture | N/A | PostgreSQL | REST APIs | None |
|
|
249
|
+
| 224 | JavaScript | Clean Architecture | N/A | PostgreSQL | REST APIs | Redis |
|
|
250
|
+
| 225 | JavaScript | Clean Architecture | N/A | PostgreSQL | REST APIs | Memory Cache |
|
|
251
|
+
| 226 | JavaScript | Clean Architecture | N/A | PostgreSQL | GraphQL | None |
|
|
252
|
+
| 227 | JavaScript | Clean Architecture | N/A | PostgreSQL | GraphQL | Redis |
|
|
253
|
+
| 228 | JavaScript | Clean Architecture | N/A | PostgreSQL | GraphQL | Memory Cache |
|
|
254
|
+
| 229 | JavaScript | Clean Architecture | N/A | PostgreSQL | Kafka | None |
|
|
255
|
+
| 230 | JavaScript | Clean Architecture | N/A | PostgreSQL | Kafka | Redis |
|
|
256
|
+
| 231 | JavaScript | Clean Architecture | N/A | PostgreSQL | Kafka | Memory Cache |
|
|
257
|
+
| 232 | JavaScript | Clean Architecture | N/A | MongoDB | REST APIs | None |
|
|
258
|
+
| 233 | JavaScript | Clean Architecture | N/A | MongoDB | REST APIs | Redis |
|
|
259
|
+
| 234 | JavaScript | Clean Architecture | N/A | MongoDB | REST APIs | Memory Cache |
|
|
260
|
+
| 235 | JavaScript | Clean Architecture | N/A | MongoDB | GraphQL | None |
|
|
261
|
+
| 236 | JavaScript | Clean Architecture | N/A | MongoDB | GraphQL | Redis |
|
|
262
|
+
| 237 | JavaScript | Clean Architecture | N/A | MongoDB | GraphQL | Memory Cache |
|
|
263
|
+
| 238 | JavaScript | Clean Architecture | N/A | MongoDB | Kafka | None |
|
|
264
|
+
| 239 | JavaScript | Clean Architecture | N/A | MongoDB | Kafka | Redis |
|
|
265
|
+
| 240 | JavaScript | Clean Architecture | N/A | MongoDB | Kafka | Memory Cache |
|
package/lib/generator.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import { fileURLToPath } from 'url';
|
|
3
3
|
import { setupProjectDirectory, copyBaseStructure, copyCommonFiles } from './modules/project-setup.js';
|
|
4
|
-
import { renderPackageJson, renderDockerCompose, renderReadme, renderDockerfile, renderProfessionalConfig, setupCiCd, renderTestSample, renderEnvExample } from './modules/config-files.js';
|
|
5
|
-
import { renderIndexFile, renderErrorMiddleware, renderDynamicComponents, renderSwaggerConfig, setupViews as setupSrcViews } from './modules/app-setup.js';
|
|
4
|
+
import { renderPackageJson, renderDockerCompose, renderReadme, renderDockerfile, renderProfessionalConfig, setupCiCd, renderTestSample, renderEnvExample, renderPm2Config } from './modules/config-files.js';
|
|
5
|
+
import { renderIndexFile, renderEnvConfig, renderErrorMiddleware, renderDynamicComponents, renderSwaggerConfig, setupViews as setupSrcViews } from './modules/app-setup.js';
|
|
6
6
|
import { setupDatabase } from './modules/database-setup.js';
|
|
7
7
|
import { setupKafka, setupViews } from './modules/kafka-setup.js';
|
|
8
8
|
import { setupCaching } from './modules/caching-setup.js';
|
|
@@ -33,6 +33,9 @@ export const generateProject = async (config) => {
|
|
|
33
33
|
// 6. Render index file (ts/js)
|
|
34
34
|
await renderIndexFile(templatePath, targetDir, config);
|
|
35
35
|
|
|
36
|
+
// 6a. Render Environment Configuration
|
|
37
|
+
await renderEnvConfig(templatePath, targetDir, config);
|
|
38
|
+
|
|
36
39
|
// 6a. Render error middleware
|
|
37
40
|
await renderErrorMiddleware(templatePath, targetDir, config);
|
|
38
41
|
|
|
@@ -73,6 +76,9 @@ export const generateProject = async (config) => {
|
|
|
73
76
|
// 15. Env Example
|
|
74
77
|
await renderEnvExample(templatesDir, targetDir, config);
|
|
75
78
|
|
|
79
|
+
// 16. PM2 Configuration
|
|
80
|
+
await renderPm2Config(templatesDir, targetDir, config);
|
|
81
|
+
|
|
76
82
|
console.log(`
|
|
77
83
|
====================================================
|
|
78
84
|
Node.js Project Created Successfully!
|
package/lib/modules/app-setup.js
CHANGED
|
@@ -22,6 +22,30 @@ export const renderIndexFile = async (templatePath, targetDir, config) => {
|
|
|
22
22
|
}
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
+
export const renderEnvConfig = async (templatePath, targetDir, config) => {
|
|
26
|
+
const { language, architecture, database, caching, communication } = config;
|
|
27
|
+
const envExt = language === 'TypeScript' ? 'ts' : 'js';
|
|
28
|
+
|
|
29
|
+
let configDir = path.join(targetDir, 'src', 'config');
|
|
30
|
+
if (architecture === 'Clean Architecture' && language === 'JavaScript') {
|
|
31
|
+
configDir = path.join(targetDir, 'src', 'infrastructure', 'config');
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const envTemplatePath = path.join(configDir, `env.${envExt}.ejs`);
|
|
35
|
+
const envDestPath = path.join(configDir, `env.${envExt}`);
|
|
36
|
+
|
|
37
|
+
if (await fs.pathExists(envTemplatePath)) {
|
|
38
|
+
const envTemplate = await fs.readFile(envTemplatePath, 'utf-8');
|
|
39
|
+
const envContent = ejs.render(envTemplate, {
|
|
40
|
+
database,
|
|
41
|
+
caching,
|
|
42
|
+
communication
|
|
43
|
+
});
|
|
44
|
+
await fs.writeFile(envDestPath, envContent);
|
|
45
|
+
await fs.remove(envTemplatePath);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
25
49
|
export const renderErrorMiddleware = async (templatePath, targetDir, config) => {
|
|
26
50
|
const { language, architecture } = config;
|
|
27
51
|
const errName = language === 'TypeScript' ? 'error.middleware.ts' : 'error.middleware.js';
|
|
@@ -59,6 +59,21 @@ export const renderDockerfile = async (templatesDir, targetDir, config) => {
|
|
|
59
59
|
await fs.writeFile(path.join(targetDir, 'Dockerfile'), dockerfileContent);
|
|
60
60
|
};
|
|
61
61
|
|
|
62
|
+
export const renderPm2Config = async (templatesDir, targetDir, config) => {
|
|
63
|
+
const { projectName, database, dbName, communication, language, caching } = config;
|
|
64
|
+
const pm2ConfigPath = path.join(targetDir, 'ecosystem.config.js');
|
|
65
|
+
const pm2Template = await fs.readFile(path.join(templatesDir, 'common', 'ecosystem.config.js.ejs'), 'utf-8');
|
|
66
|
+
const pm2Content = ejs.render(pm2Template, {
|
|
67
|
+
projectName,
|
|
68
|
+
database,
|
|
69
|
+
dbName,
|
|
70
|
+
communication,
|
|
71
|
+
language,
|
|
72
|
+
caching
|
|
73
|
+
});
|
|
74
|
+
await fs.writeFile(pm2ConfigPath, pm2Content);
|
|
75
|
+
};
|
|
76
|
+
|
|
62
77
|
export const renderProfessionalConfig = async (templatesDir, targetDir, language) => {
|
|
63
78
|
const eslintTemplate = await fs.readFile(path.join(templatesDir, 'common', 'eslint.config.mjs.ejs'), 'utf-8');
|
|
64
79
|
const eslintContent = ejs.render(eslintTemplate, { language });
|
|
@@ -98,7 +113,8 @@ export const renderTestSample = async (templatesDir, targetDir, language) => {
|
|
|
98
113
|
|
|
99
114
|
export const renderEnvExample = async (templatesDir, targetDir, config) => {
|
|
100
115
|
const { database, dbName, communication, projectName, caching } = config;
|
|
101
|
-
const
|
|
116
|
+
const envExamplePath = path.join(targetDir, '.env.example');
|
|
117
|
+
const envPath = path.join(targetDir, '.env');
|
|
102
118
|
const envTemplate = await fs.readFile(path.join(templatesDir, 'common', '.env.example.ejs'), 'utf-8');
|
|
103
119
|
|
|
104
120
|
const envContent = ejs.render(envTemplate, {
|
|
@@ -109,5 +125,6 @@ export const renderEnvExample = async (templatesDir, targetDir, config) => {
|
|
|
109
125
|
caching
|
|
110
126
|
});
|
|
111
127
|
|
|
128
|
+
await fs.writeFile(envExamplePath, envContent);
|
|
112
129
|
await fs.writeFile(envPath, envContent);
|
|
113
130
|
};
|