ydev-mern 1.0.0 → 1.0.3
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/backend/package.json +3 -1
- package/backend/src/Server.js +5 -3
- package/backend/src/db.js +2 -2
- package/bin/cli.js +66 -13
- package/package.json +6 -1
- package/backend/package-lock.json +0 -1461
- package/frontend/package-lock.json +0 -2491
package/backend/package.json
CHANGED
package/backend/src/Server.js
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import express from "express";
|
|
2
|
-
import
|
|
2
|
+
import cors from "cors";
|
|
3
|
+
import { connectdb } from "./db.js";
|
|
3
4
|
|
|
4
5
|
const app = express();
|
|
5
6
|
|
|
7
|
+
app.use(cors());
|
|
6
8
|
app.use(express.json());
|
|
7
9
|
|
|
8
10
|
app.get('/', (req, res) => {
|
|
9
11
|
res.send("Backend is running");
|
|
10
|
-
})
|
|
12
|
+
});
|
|
11
13
|
|
|
12
14
|
app.listen(3000, () => {
|
|
13
15
|
console.log("Server started on port 3000");
|
|
14
16
|
connectdb();
|
|
15
|
-
})
|
|
17
|
+
});
|
package/backend/src/db.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import mongoose from "
|
|
1
|
+
import mongoose from "mongoose";
|
|
2
2
|
import 'dotenv/config';
|
|
3
3
|
export const connectdb = async () => {
|
|
4
4
|
try {
|
|
5
|
-
const connection = await mongoose.connect(MONGO_URI);
|
|
5
|
+
const connection = await mongoose.connect(process.env.MONGO_URI);
|
|
6
6
|
|
|
7
7
|
console.log("Mongodb connected");
|
|
8
8
|
} catch (error) {
|
package/bin/cli.js
CHANGED
|
@@ -9,10 +9,23 @@ const __dirname = path.dirname(__filename);
|
|
|
9
9
|
const rootPackageDir = path.resolve(__dirname, '..');
|
|
10
10
|
|
|
11
11
|
const targetArg = process.argv[2];
|
|
12
|
-
const targetDir = targetArg
|
|
12
|
+
const targetDir = targetArg
|
|
13
|
+
? path.resolve(process.cwd(), targetArg)
|
|
14
|
+
: process.cwd();
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
const colors = {
|
|
17
|
+
reset: '\x1b[0m',
|
|
18
|
+
bold: '\x1b[1m',
|
|
19
|
+
cyan: '\x1b[36m',
|
|
20
|
+
yellow: '\x1b[33m',
|
|
21
|
+
green: '\x1b[32m',
|
|
22
|
+
red: '\x1b[31m',
|
|
23
|
+
gray: '\x1b[90m',
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
function log(message = '') {
|
|
27
|
+
console.log(message);
|
|
28
|
+
}
|
|
16
29
|
|
|
17
30
|
function copyDirRecursive(src, dest) {
|
|
18
31
|
if (!fs.existsSync(dest)) {
|
|
@@ -25,7 +38,14 @@ function copyDirRecursive(src, dest) {
|
|
|
25
38
|
const srcPath = path.join(src, entry.name);
|
|
26
39
|
const destPath = path.join(dest, entry.name);
|
|
27
40
|
|
|
28
|
-
|
|
41
|
+
// Skip generated or environment-specific directories
|
|
42
|
+
if (
|
|
43
|
+
entry.name === 'node_modules' ||
|
|
44
|
+
entry.name === 'dist' ||
|
|
45
|
+
entry.name === '.git' ||
|
|
46
|
+
entry.name === 'package-lock.json' ||
|
|
47
|
+
entry.name === '.DS_Store'
|
|
48
|
+
) {
|
|
29
49
|
continue;
|
|
30
50
|
}
|
|
31
51
|
|
|
@@ -38,25 +58,58 @@ function copyDirRecursive(src, dest) {
|
|
|
38
58
|
}
|
|
39
59
|
|
|
40
60
|
try {
|
|
61
|
+
log();
|
|
62
|
+
log(
|
|
63
|
+
`${colors.bold}${colors.cyan}ydev-mern${colors.reset} ${colors.gray}Project Scaffolder${colors.reset}`
|
|
64
|
+
);
|
|
65
|
+
log();
|
|
66
|
+
|
|
67
|
+
log(
|
|
68
|
+
`${colors.gray}Project directory:${colors.reset} ${colors.yellow}${targetDir}${colors.reset}`
|
|
69
|
+
);
|
|
70
|
+
log();
|
|
71
|
+
|
|
41
72
|
const foldersToCopy = ['frontend', 'backend'];
|
|
42
73
|
|
|
74
|
+
log(`${colors.bold}Creating project structure${colors.reset}`);
|
|
75
|
+
log();
|
|
76
|
+
|
|
43
77
|
for (const folder of foldersToCopy) {
|
|
44
78
|
const srcFolder = path.join(rootPackageDir, folder);
|
|
45
79
|
const destFolder = path.join(targetDir, folder);
|
|
46
80
|
|
|
47
81
|
if (fs.existsSync(srcFolder)) {
|
|
48
|
-
|
|
82
|
+
log(` Copying ${folder}/`);
|
|
49
83
|
copyDirRecursive(srcFolder, destFolder);
|
|
50
84
|
}
|
|
51
85
|
}
|
|
52
86
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
87
|
+
log();
|
|
88
|
+
log(`${colors.green}${colors.bold}Project created successfully.${colors.reset}`);
|
|
89
|
+
log();
|
|
90
|
+
|
|
91
|
+
log(`${colors.bold}Next steps${colors.reset}`);
|
|
92
|
+
log();
|
|
93
|
+
|
|
94
|
+
log(` Backend`);
|
|
95
|
+
log(` ${colors.gray}$${colors.reset} cd backend`);
|
|
96
|
+
log(` ${colors.gray}$${colors.reset} npm install`);
|
|
97
|
+
log(` ${colors.gray}$${colors.reset} npm run dev`);
|
|
98
|
+
log();
|
|
99
|
+
|
|
100
|
+
log(` Frontend`);
|
|
101
|
+
log(` ${colors.gray}$${colors.reset} cd frontend`);
|
|
102
|
+
log(` ${colors.gray}$${colors.reset} npm install`);
|
|
103
|
+
log(` ${colors.gray}$${colors.reset} npm run dev`);
|
|
104
|
+
log();
|
|
105
|
+
|
|
106
|
+
log(`${colors.gray}Start both services in separate terminal windows.${colors.reset}`);
|
|
107
|
+
log();
|
|
59
108
|
} catch (error) {
|
|
60
|
-
|
|
109
|
+
log();
|
|
110
|
+
log(`${colors.red}${colors.bold}Project setup failed.${colors.reset}`);
|
|
111
|
+
log();
|
|
112
|
+
log(`${colors.red}${error.message}${colors.reset}`);
|
|
113
|
+
log();
|
|
61
114
|
process.exit(1);
|
|
62
|
-
}
|
|
115
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ydev-mern",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "Full-stack MERN developer toolkit featuring modern React frontend and Express backend.",
|
|
5
5
|
"main": "backend/src/Server.js",
|
|
6
6
|
"type": "module",
|
|
@@ -9,7 +9,12 @@
|
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
11
|
"frontend",
|
|
12
|
+
"!frontend/package-lock.json",
|
|
13
|
+
"!frontend/node_modules",
|
|
14
|
+
"!frontend/dist",
|
|
12
15
|
"backend",
|
|
16
|
+
"!backend/package-lock.json",
|
|
17
|
+
"!backend/node_modules",
|
|
13
18
|
"bin",
|
|
14
19
|
"README.md"
|
|
15
20
|
],
|