Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Tranh luận về dấu nháy đơn hay nháy kép, thụt lề hai hay bốn khoảng trắng, dấu chấm phẩy có nên có hay không... là chuyện làm mất thời gian của nhiều nhóm. Formatter và linter giải quyết triệt để việc này bằng cách giao cho máy móc. Bài này giải thích khác biệt, cách cài đặt và cách tích hợp vào quy trình.
Hai công cụ bổ sung cho nhau: formatter lo hình thức, linter lo chất lượng. Nhiều dự án dùng cả hai.
npm install --save-dev prettier eslintTạo file .prettierrc với vài tùy chọn đơn giản:
{"singleQuote": true,"semi": true,"printWidth": 100,"trailingComma": "es5"}Thêm script vào package.json:
{"scripts": {"format": "prettier --write .","format:check": "prettier --check .","lint": "eslint ."}}Cấu hình ESLint (tên file và định dạng thay đổi theo phiên bản, bạn có thể dùng lệnh khởi tạo npm init @eslint/config để tạo theo hướng dẫn). Với dự án dùng cả hai, cần đảm bảo các quy tắc ESLint về định dạng không xung đột với Prettier, thường qua cấu hình eslint-config-prettier.
Đừng quên tạo .prettierignore hoặc cấu hình ignore để bỏ qua thư mục sinh tự động như node_modules, dist.
| Ngôn ngữ | Formatter | Linter |
|---|---|---|
| JavaScript / TypeScript | Prettier | ESLint |
| Python | Black, Ruff format | Ruff, Flake8, Pylint |
| PHP | PHP-CS-Fixer, Laravel Pint | PHPStan, Psalm, PHP_CodeSniffer |
| Go | gofmt | golangci-lint, go vet |
| Java | google-java-format, Spotless | Checkstyle, SpotBugs |
| Rust | rustfmt | Clippy |
Cách tiện nhất là để editor tự định dạng mỗi khi bạn lưu file. Với VS Code, cài extension Prettier và ESLint rồi thêm vào settings:
{"editor.formatOnSave": true,"editor.defaultFormatter": "esbenp.prettier-vscode","editor.codeActionsOnSave": {"source.fixAll.eslint": "explicit"}}Từ đó bạn gần như không bao giờ phải nghĩ đến định dạng nữa.
Không thể tin mọi người cấu hình editor giống nhau, vì vậy hãy kiểm tra ở hai tầng:
npm run format:check và npm run lint trong pipeline. Nếu lỗi thì pull request không được merge. Đây là lưới an toàn cuối cùng.{"lint-staged": {"*.{js,ts,jsx,tsx}": ["prettier --write", "eslint --fix"],"*.{json,md,css}": ["prettier --write"]}}Khi đưa formatter vào dự án cũ, lần chạy đầu sẽ thay đổi rất nhiều dòng. Một số lời khuyên:
git blame bằng file .git-blame-ignore-revs, để lịch sử tác giả dòng code không bị che bởi commit này.Hãy để máy làm việc của máy: định dạng và bắt lỗi cơ bản tự động, con người tập trung vào thiết kế và logic. Chỉ cần một buổi chiều cấu hình, bạn và cả nhóm sẽ tiết kiệm được rất nhiều thời gian về sau.
Nếu bạn muốn học cách thiết lập môi trường làm việc chuyên nghiệp cho dự án, hãy xem qua các khóa học trên codebem.com.
Nguyễn Đình Cường
0 comment