@ifecodes/backend-template 1.1.6 → 1.1.8
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/bin/cli.js +21 -13
- package/bin/lib/microservice-config.js +9 -2
- package/package.json +1 -1
- package/template/gateway/ts/inject.js +3 -2
package/bin/cli.js
CHANGED
|
@@ -371,9 +371,15 @@ if (isInMicroserviceProject || config.projectType === "microservice") {
|
|
|
371
371
|
description: config.description || "",
|
|
372
372
|
private: true,
|
|
373
373
|
scripts: {
|
|
374
|
-
dev:
|
|
375
|
-
|
|
376
|
-
|
|
374
|
+
dev:
|
|
375
|
+
mode === "docker"
|
|
376
|
+
? "docker-compose up"
|
|
377
|
+
: "npx pm2 start pm2.config.js && npx pm2 logs",
|
|
378
|
+
stop: mode === "docker" ? "docker-compose down" : "npx pm2 kill",
|
|
379
|
+
restart:
|
|
380
|
+
mode === "docker"
|
|
381
|
+
? "docker-compose restart"
|
|
382
|
+
: "npx pm2 restart all && npx pm2 logs",
|
|
377
383
|
lint: 'eslint "services/**/*.{js,ts,tsx}" "shared/**/*.{js,ts,tsx}"',
|
|
378
384
|
format:
|
|
379
385
|
'prettier --write "services/**/*.{js,ts,json}" "shared/**/*.{js,ts,json}"',
|
|
@@ -390,6 +396,16 @@ if (isInMicroserviceProject || config.projectType === "microservice") {
|
|
|
390
396
|
"eslint-config-prettier": "^10.1.8",
|
|
391
397
|
},
|
|
392
398
|
};
|
|
399
|
+
|
|
400
|
+
// Add runtime dependencies for non-Docker (PM2) mode
|
|
401
|
+
if (mode !== "docker") {
|
|
402
|
+
rootPackageJson.dependencies = {
|
|
403
|
+
dotenv: "^17.2.3",
|
|
404
|
+
pm2: "^6.0.14",
|
|
405
|
+
"ts-node": "^10.9.2",
|
|
406
|
+
"tsconfig-paths": "^4.2.0",
|
|
407
|
+
};
|
|
408
|
+
}
|
|
393
409
|
fs.writeFileSync(
|
|
394
410
|
rootPackageJsonPath,
|
|
395
411
|
JSON.stringify(rootPackageJson, null, 2) + "\n",
|
|
@@ -770,11 +786,7 @@ if (isInMicroserviceProject) {
|
|
|
770
786
|
);
|
|
771
787
|
console.log(`\n${pc.cyan("📦 All services:")} ${allServices.join(", ")}`);
|
|
772
788
|
console.log(`\n${pc.blue("💡 Next steps:")}`);
|
|
773
|
-
console.log(
|
|
774
|
-
mode === "docker"
|
|
775
|
-
? ` ${pc.dim("1.")} Start services: ${pc.bold("npm run dev")}`
|
|
776
|
-
: ` ${pc.dim("1.")} Start services: ${pc.bold("pm2 start pm2.config.js")}`,
|
|
777
|
-
);
|
|
789
|
+
console.log( ` ${pc.dim("1.")} Start services: ${pc.bold("npm run dev")}`);
|
|
778
790
|
} else if (config.projectType === "microservice") {
|
|
779
791
|
console.log(`\n${pc.green("✅ Microservice Backend created successfully!")}`);
|
|
780
792
|
console.log(
|
|
@@ -782,11 +794,7 @@ if (isInMicroserviceProject) {
|
|
|
782
794
|
);
|
|
783
795
|
console.log(`\n${pc.blue("💡 Next steps:")}`);
|
|
784
796
|
console.log(` ${pc.dim("1.")} cd ${pc.bold(sanitizedName)}`);
|
|
785
|
-
console.log(
|
|
786
|
-
mode === "docker"
|
|
787
|
-
? ` ${pc.dim("2.")} Start services: ${pc.bold("npm run dev")}`
|
|
788
|
-
: ` ${pc.dim("2.")} Start services: ${pc.bold("pm2 start pm2.config.js")}`,
|
|
789
|
-
);
|
|
797
|
+
console.log(` ${pc.dim("2.")} Start services: ${pc.bold("npm run dev")}`);
|
|
790
798
|
} else {
|
|
791
799
|
console.log(`\n${pc.green("✅ Monolith Backend created successfully!")}`);
|
|
792
800
|
console.log(`\n${pc.blue("💡 Next steps:")}`);
|
|
@@ -89,11 +89,18 @@ export const generatePm2Config = (target, allServices) => {
|
|
|
89
89
|
return {
|
|
90
90
|
name: serviceName,
|
|
91
91
|
script: `./services/${serviceName}/src/server.ts`,
|
|
92
|
+
interpreter: "node",
|
|
93
|
+
node_args:
|
|
94
|
+
"-r ts-node/register/transpile-only -r tsconfig-paths/register",
|
|
95
|
+
watch: true,
|
|
96
|
+
ignore_watch: ["node_modules", ".git", "logs"],
|
|
97
|
+
watch_delay: 1000,
|
|
92
98
|
instances: 1,
|
|
93
99
|
exec_mode: "fork",
|
|
94
100
|
env: {
|
|
95
|
-
PORT: port
|
|
96
|
-
|
|
101
|
+
PORT: port,
|
|
102
|
+
TS_NODE_PROJECT: `services/${serviceName}/tsconfig.json`,
|
|
103
|
+
},
|
|
97
104
|
};
|
|
98
105
|
}),
|
|
99
106
|
};
|
package/package.json
CHANGED
|
@@ -10,13 +10,14 @@ export const generateGatewayRoutes = (services, mode = "docker") => {
|
|
|
10
10
|
// Docker: use container name with internal port 4000
|
|
11
11
|
// Non-docker: use localhost with mapped host port
|
|
12
12
|
const host = mode === "docker" ? service : "localhost";
|
|
13
|
-
|
|
13
|
+
// Build a placeholder that will render as ${SERVICE_PORT} in the generated code
|
|
14
|
+
const servicePortPlaceholder = "${" + servicePort + "}";
|
|
14
15
|
|
|
15
16
|
return `
|
|
16
17
|
// Proxy to ${service}
|
|
17
18
|
const ${servicePort} = ENV.${servicePort} || ${port}
|
|
18
19
|
app.use("/api", createProxyMiddleware({
|
|
19
|
-
target: \`http://${host}:${
|
|
20
|
+
target: \`http://${host}:${servicePortPlaceholder}/api\`,
|
|
20
21
|
changeOrigin: true,
|
|
21
22
|
on: {
|
|
22
23
|
error: (err, req, res) => {
|