typescript-express-starter
Version:
Quick and Easy TypeScript Express Starter
39 lines (32 loc) β’ 1.11 kB
text/typescript
import 'reflect-metadata';
import '@config/env';
import { container } from 'tsyringe';
import { setupContainer } from '@config/container';
import App from '@/app';
import { AuthRoute } from '@routes/auth.route';
import { UsersRoute } from '@routes/users.route';
import { logger } from '@utils/logger';
// π§ νμ΄λΈλ¦¬λ DI 컨ν
μ΄λ μ€μ
// Infrastructure(Repository) - λͺ
μμ κ΄λ¦¬
// Business(Service) - λͺ
μμ κ΄λ¦¬
// Presentation(Controller/Route) - μλ μ£Όμ
setupContainer();
// λΌμ°νΈ μΈμ€ν΄μ€ μμ±
const routes = [container.resolve(AuthRoute), container.resolve(UsersRoute)];
// μ± μΈμ€ν΄μ€ μμ±
const appInstance = new App(routes);
// μλ² μμ
const server = appInstance.listen();
// Graceful Shutdown
if (server && typeof server.close === 'function') {
['SIGINT', 'SIGTERM'].forEach((signal) => {
process.on(signal, () => {
logger.info(`Received ${signal}, closing server...`);
server.close(() => {
logger.info('HTTP server closed gracefully');
process.exit(0);
});
});
});
}
export default server;