UNPKG

litepath

Version:

Microframework ligero para Node.js

76 lines (61 loc) 2.16 kB
#!/usr/bin/env node import fs from 'fs-extra'; import path from 'path'; import { fileURLToPath } from 'url'; // Obtenemos la ruta del archivo actual const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const args = process.argv.slice(2); if (args[0] === 'create') { const projectName = args[1]; if (!projectName) { console.error('Debes especificar un nombre para el proyecto.'); process.exit(1); } const projectPath = path.join(process.cwd(), projectName); if (fs.existsSync(projectPath)) { console.error(`La carpeta ${projectName} ya existe.`); process.exit(1); } console.log('📂 Copiando estructura...'); // Carpeta del paquete global de LitePath const sourcePath = path.resolve(__dirname); try { // Copiamos todos los archivos y carpetas del paquete hacia el proyecto fs.copySync(sourcePath, projectPath, { filter: (src) => { // Opcional: no copiar node_modules si existiera return !src.includes('node_modules'); }, }); console.log(`✅ Proyecto creado en ${projectPath}`); console.log('Para iniciarlo:'); console.log(` cd ${projectName}`); console.log(` node app.js`); } catch (err) { console.error('❌ Error al crear el proyecto:', err); process.exit(1); } process.exit(0); } // Si no es "create", podemos arrancar un servidor de ejemplo import LitePath from './litepath.js'; const app = new LitePath(); // Middleware simple de logging app.use((req, res, next) => { console.log(`[${new Date().toISOString()}] ${req.method} ${req.path}`); next(); }); // Carpeta de archivos estáticos app.serveStatic('./public'); // Arranca el servidor const PORT = process.env.PORT || 3001; app.listen(PORT, () => console.log(`Servidor LitePath corriendo en http://localhost:${PORT}`)); // Manejo básico de errores app.onError = (err) => { if (err.code === 'EADDRINUSE') { console.error(`Puerto ${PORT} en uso. Usa otro puerto con PORT=<puerto> litepath`); } else { console.error('Error del servidor:', err); } };