0

[Tool] Tự động hóa việc tạo project Node.js "chuẩn chỉnh" chỉ trong 1 phút với nodejs-quickstart-structure

Chào anh em Viblo,

Là một Node.js developer, chắc hẳn anh em ai cũng từng trải qua cảm giác "ngán ngẩm" mỗi khi bắt đầu một project mới. Cảm giác phải đi copy-paste lại cấu trúc thư mục từ dự án cũ, rồi hì hục setup lại ESLint, Prettier, cấu hình Docker, kết nối Database, dựng base Controller/Service... Nó không khó, nhưng nó tốn thời gian và rất dễ mắc lỗi lặt vặt.

Để giải quyết vấn đề "boilerplate fatigue" này, mình đã build một chiếc CLI tool tên là nodejs-quickstart-structure. Mục tiêu đơn giản thôi: Gõ 1 lệnh, có ngay một project Node.js xịn xò, chuẩn industry-standard để code logic luôn.

Hôm nay mình xin giới thiệu với anh em về tool này nhé.

Demo

Tại sao lại cần nodejs-quickstart-structure?

Hiện tại có khá nhiều boilerplate generator ngoài kia, nhưng mình thấy đa số thường:

  1. Quá đơn giản (chỉ có Express + Mongoose cơ bản).
  2. Hoặc quá phức tạp/opinionated (ép dùng framework lạ).
  3. Ít hỗ trợ Clean Architecture một cách bài bản.

nodejs-quickstart-structure được thiết kế để cân bằng giữa sự linh hoạt và tính chuẩn mực.

Các tính năng nổi bật (Features)

  • Đa kiến trúc (Architecture Agnostic):
    • Support MVC: Cho các dự án vừa và nhỏ, cần phát triển nhanh.
    • Support Clean Architecture: Cho các dự án enterprise, microservices, cần độ tách biệt cao (Dependency Rule).
  • Support tận răng JS & TS: Bạn thích viết JavaScript thuần hay TypeScript chặt chẽ đều có option.
  • Database đa dạng: Tự động cấu hình kết nối cho MongoDB, MySQL, hoặc PostgreSQL.
  • Microservices Ready: Tùy chọn tích hợp sẵn Kafka cho giao tiếp event-driven.
  • Caching: Tùy chọn tích hợp Redis để cache dữ liệu.
  • DevOps Friendly:
    • Tự sinh docker-compose.yml đầy đủ cho DB, Redis, Kafka, Zookeeper.
    • Tự sinh Dockerfile tối ưu (Multi-stage build).
    • Có sẵn template CI/CD cho GitHub ActionsJenkins.
  • Chất lượng code: Tích hợp sẵn ESLint, Prettier, Husky, Lint-staged để đảm bảo code sạch từ đầu.
  • Logging chuẩn: Dùng Winston + Morgan để log request/error chuyên nghiệp.

Cài đặt và Sử dụng

Cực kỳ đơn giản, tool đã được publish lên npm.

Cài đặt

npm install -g nodejs-quickstart-structure

Sử dụng

Di chuyển đến thư mục bạn muốn tạo project và chạy:

nodejs-quickstart init

Lúc này, CLI sẽ hiện ra một loạt các câu hỏi tương tác để bạn chọn cấu hình mong muốn:

  1. Tên Project: my-awesome-app
  2. Ngôn ngữ: TypeScript / JavaScript
  3. Kiến trúc: Clean Architecture / MVC
  4. Database: PostgreSQL / MySQL / MongoDB
  5. Caching: Redis / None
  6. Giao tiếp: REST APIs / Kafka

Và... BÙM! 🚀

Chỉ sau vài giây, bạn sẽ có một thư mục project với đầy đủ cấu trúc:

my-awesome-app/
├── src/
│   ├── config/           # Environment variables, db config
│   ├── controllers/      # (MVC) hoặc interfaces/controllers (Clean Arch)
│   ├── routes/           # (MVC) hoặc interfaces/routes (Clean Arch)
│   ├── usecases/         # (Clean Arch) Application Business Rules
│   ├── domain/           # (Clean Arch) Enterprise Business Rules
│   ├── infrastructure/   # (Clean Arch) Database repositories, external services
│   └── index.ts          # Entry point
├── docker-compose.yml    # Đã config sẵn hết port, services
├── .eslintrc.json
├── package.json
└── ...

Demo một chút về khả năng tùy biến

Tool này hỗ trợ tới 112 tổ hợp cấu hình khác nhau (đã được test kỹ càng trên cả Windows và Linux).

Ví dụ, nếu bạn chọn TypeScript + Clean Architecture + PostgreSQL + Kafka + Redis, tool sẽ:

  1. Tạo cấu trúc Clean Arch (Entities, Use Cases, Interfaces, Frameworks).
  2. Cài driver pg.
  3. Cấu hình kafkajs để bắn message.
  4. Cấu hình redis client để cache.
  5. Tạo utils với Migration scripts (nếu cần).
  6. Viết sẵn code mẫu CRUD User để bạn tham khảo cách luồng dữ liệu chạy.

Đóng góp (Contribution)

Tool này là Open Source (License ISC). Mình rất hoan nghênh anh em vào vọc vạch, report bug hoặc đóng góp thêm feature mới (ví dụ support thêm RabbitMQ, OAuth2.0 ...).

Nếu thấy hữu ích, đừng tiếc 1 ⭐️ trên GitHub để mình có động lực update tiếp nhé!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí