setup-node-boilerplate
Version:
A CLI tool to generate a standard Node.js + Express project structure instantly.
109 lines (86 loc) ⢠2.09 kB
JavaScript
#!/usr/bin/env node
const fs = require('fs');
const path = require('path');
const projectName = process.argv[2];
if (!projectName) {
console.error('ā Please provide a project name: setup-node-boilerplate my-app');
process.exit(1);
}
const root = path.join(process.cwd(), projectName);
const folders = [
'config',
'controllers',
'models',
'routes',
'middleware',
'utils',
'logs',
'public'
];
console.log(`š Creating Node.js boilerplate at ${root}`);
// 1ļøā£ Make root
fs.mkdirSync(root, { recursive: true });
// 2ļøā£ Make folders
folders.forEach(folder => {
fs.mkdirSync(path.join(root, folder), { recursive: true });
});
// 3ļøā£ Create .gitignore with content
fs.writeFileSync(
path.join(root, '.gitignore'),
`node_modules/
.env
logs/
`);
// 4ļøā£ Create .env with content
fs.writeFileSync(
path.join(root, '.env'),
`PORT=5000
`);
// 5ļøā£ Create server.js with content
fs.writeFileSync(
path.join(root, 'server.js'),
`const express = require('express');
const dotenv = require('dotenv').config();
const cors = require('cors');
const app = express();
app.use(cors());
app.use(express.json());
app.get('/', (req, res) => {
res.send('ā
Server is running!');
});
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(\`š Server running on http://localhost:\${PORT}\`));
`);
// 6ļøā£ Create package.json with content
fs.writeFileSync(
path.join(root, 'package.json'),
`{
"name": "${projectName}",
"version": "1.0.0",
"main": "server.js",
"scripts": {
"start": "node server.js",
"dev": "nodemon server.js"
},
"dependencies": {
"express": "^4.18.2",
"dotenv": "^16.3.1",
"cors": "^2.8.5"
},
"devDependencies": {
"nodemon": "^3.0.0"
}
}
`);
// 7ļøā£ Create README.md with content
fs.writeFileSync(
path.join(root, 'README.md'),
`# ${projectName}
ā
Ready Node.js boilerplate with Express server.
## How to run
1. npm install
2. npm run dev
3. Visit: http://localhost:5000
`
);
console.log('ā
Done! Boilerplate generated successfully!');