create-mern-backend
Version:
CLI to scaffold MERN backend folder structure with .env and server.js
78 lines (61 loc) • 1.74 kB
JavaScript
#!/usr/bin/env node
const fs = require("fs");
const path = require("path");
const folders = [
"config",
"controllers",
"models",
"routes",
"middlewares",
"utils",
];
console.log("📦 Creating MERN backend folder structure...");
// Create folders
folders.forEach((folder) => {
fs.mkdirSync(folder, { recursive: true });
console.log(`📁 Created folder: ${folder}/`);
});
// Create server.js
const serverContent = `const express = require('express');
const dotenv = require('dotenv');
const cors = require('cors');
const connectDB = require('./config/db');
dotenv.config();
const app = express();
app.use(cors());
app.use(express.json());
connectDB();
app.get('/', (req, res) => {
res.send('API is running...');
});
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(\`Server running on port \${PORT}\`));
`;
fs.writeFileSync("server.js", serverContent);
console.log("📝 Created file: server.js");
// Create config/db.js
const dbContent = `const mongoose = require('mongoose');
const connectDB = async () => {
try {
await mongoose.connect(process.env.MONGO_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
console.log('MongoDB connected');
} catch (error) {
console.error('MongoDB connection failed:', error.message);
process.exit(1);
}
};
module.exports = connectDB;
`;
fs.writeFileSync(path.join("config", "db.js"), dbContent);
console.log("📝 Created file: config/db.js");
// Create .env file
const envContent = `PORT=5000
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret_key
`;
fs.writeFileSync(".env", envContent);
console.log("📝 Created file: .env");
console.log("✅ MERN backend structure ready!");