1. Các thư viện cần thiết
1.1. Prettier:
- Prettier mục đích để format code theo quy chuẩn
Github: https://github.com/prettier/prettier
Document: https://prettier.io/docs/en/
Config: https://prettier.io/docs/en/configuration.html
1.2. Lint-staged
- Lint-staged mục đích để chạy 1 lệnh CMD khi sử dụng lệnh git (git add, git commit ....)
- Github: https://github.com/okonet/lint-staged
1.3. Husky
- Github: https://github.com/typicode/husky/tree/master
1.4. Cài đặt thư viện
1 |
npm i prettier lint-staged husky --save-dev |
2. Sử dụng Prettier:
-- Tại ./package.json -> Tạo scripts để chạy CLI
1 2 3 4 |
"scripts": { "beautiful": "prettier --single-quote --trailing-comma all --tab-width 4 --write src/**/*.{json,js,scss}", "start": "nodemon --inspect src/index.js", }, |
-- Lưu ý, đường dẫn thư mục không cần có dấu nháy đơn
-- Sử dụng CLI (Terminal)
1 |
npm run beautiful |
3. Sử dụng Lint-staged:
3.1. Cài đặt
-- Tại ./package.json -> Tạo lint-staged (cấp 1, đứng ngang hàng với script)
1 2 3 4 5 |
{ "lint-staged": { "*": "your-cmd" } } |
-- Ví dụ
1 2 3 4 5 6 7 8 |
"scripts": { "beautiful": "lint-staged", "start": "nodemon --inspect src/index.js", }, "lint-staged": { "src/**/*.{json,js,scss}": "prettier --single-quote --trailing-comma all --tab-width 4 --write" }, |
3.2. Sử dụng
-- Như vậy, khi ta chạy dòng lệnh CLI "npm run beautiful" thì lệnh "lint-staged" sẽ được kích hoạt.
-- "lint-staged" sẽ tìm tất cả file đang ở trạng thái "git staged files". Trong đó, những file nào match được với pattern "src/**/*.{json,js,scss}" thì sẽ chạy dòng lệnh prettier
-- File ở trạng thái "git staged files": nghĩa là file đang được git add, commit,....
-- Ví dụ: chạy lần lượt các dòng lệnh CLI để beautiful tất cả các file được add lên git
1 2 |
git add . npm run beautiful |
4. Sử dụng Husky:
-- Tại ./package.json -> Tạo husky (cấp 1, đứng ngang hàng với script)
1 2 3 4 5 6 7 8 9 |
{ "husky": { "hooks": { "pre-commit": "lint-staged", "pre-push": "npm test", "...": "..." } } } |
-- Khi commit code lên git, "pre-commit" sẽ chạy trước ứng với lệnh "lint-staged".
-- Như vậy, khi git commit, code sẽ tự động được format, sau đó được đẩy lên git -> rất nhàn và hiệu quả 😀