- vừa được xem lúc

Cấu hình eslint airbnb, prettier cho dự next.js sử dụng typescript

0 0 195

Người đăng: Khánh Lê

Theo Viblo Asia

Chào mọi, mình đã quay lại đây. Hôm nay mình sẽ đem đến một chủ đề linter cụ thể cấu hình eslint cho dự án next. Không lòng vòng mình vô thẳng chủ đề chính luôn nhé ^^ Giới thiệu một chút, chắc hẳn nhiều người cũng đã biết qua về eslint hoặc đã sử dụng chúng thường xuyên. Thì mình xin tóm tắt gọn một chút, linter được biết như là công cụ giúp chúng ta xác định được format code, những vấn đề về convention trong dự án, đặt biệt hữu dựng với dự án có nhiều người tham gia. Chúng giúp chúng ta code phải tuân thủ theo rules mà dự án đã định nghĩa. Đồng thời cảnh báo, ngăn chặn phân tích đưa ra hướng giải quyết cho bạn, có thể tự sửa code, thậm chí có thể ngăn chặn bạn đẩy code lên trên repo dự án nếu không tuân thủ convention của dự án. Ok giờ thì mình vào thực hiện luôn nhé.

Bước chuẩn bị:

  • Ở đây mình sử dụng editor VS code
  • Down các package cần thiết: ESLint, Prettier, Prettier Formatter, EditorConfig for VS Code, vscode-styled-components (nếu bạn có dùng styled-components trong dự án của mình)
  • Các gói thư viện chính sự dụng: Eslint, prettier, airbnb, husky, stylelint

Triển thôi:

  1. Để cài thư viện Eslint và Prettier vào dự án. Chúng ta sẽ bật terminal và thư mục trỏ vị trí thư mục gốc (chứa file package.json), chạy câu lệnh: npm install -D eslint prettier đối với npm hoặc yarn add -D eslint prettier đối với yarn.

  2. Tiếp đến cài Airbnb. Ở phiên bản hiện tại npm ^ 5+, chúng ta chỉ cần chạy câu lệnh ngắn gọn npx install-peerdeps --dev eslint-config-airbnb để cài đặt cấu hình các dependencies của nó. Nếu bạn còn ở phiên bản npm thấp hơn mà không muốn nâng cấp lên thì cũng có thể tham khảo cách cài đặt ở đây

  3. Tiếp theo chúng ta cần cài eslint-config-prettier (tắt các rule không cần thiết hoặc không cần thiết hoặc conflict với Prettier) eslint-plugin-prettier( cho phép ESlint hiển thị ra lỗi format, tích hợp prettier rules với eslint rules). Chạy lệnh: npm- npm install -D eslint-config-prettier eslint-plugin-prettier hoặc yarn add -D eslint-config-prettier eslint-plugin-prettier

  4. Bây giờ tạo file .eslintrc.js trong thực mục gốc

module.exports = { extends: [ 'airbnb', 'prettier', 'plugin:@typescript-eslint/recommended', 'airbnb/hooks' ], plugins: ['prettier', 'import'], rules: { 'prettier/prettier': ['error'], 'import/no-unresolved': 'error', // turn on errors for missing imports 'react/jsx-filename-extension': [0, { extensions: ['.tsx'] }], 'react/react-in-jsx-scope': 'off', 'react/jsx-props-no-spreading': [ 0, { html: 'ignore', custom: 'ignore', explicitSpread: 'ignore' }, ], 'no-use-before-define': 0, '@typescript-eslint/no-use-before-define': 2, 'import/order': [ 2, { groups: [ 'builtin', 'external', 'internal', 'parent', 'sibling', 'index', ], 'newlines-between': 'always', }, ], 'import/newline-after-import': 1, }, parserOptions: { project: './tsconfig.eslint.json', }, settings: { 'import/parsers': { '@typescript-eslint/parser': ['.ts', '.tsx'], }, 'import/resolver': { typescript: { project: './tsconfig.eslint.json', }, }, },
};
  • Chúng ta cũng có thể custom một số rule theo ý ở rules còn lại thì airbnb đã config sẵn khá đầy đủ và sịn sò. Tham khảo thêm rules tại đây
  1. Tạo file tsconfig.eslint.json
{ "extends": "./tsconfig.json", "include": ["src/**/*.ts", "src/**/*.js", "test/**/*.ts", ".eslintrc.js", "**/*.ts", "**/*.tsx"]
}
  1. Tạo file .prettierrc.js trong thư mục gốc. File này sẽ là nơi bạn cài đặt cấu hình formating của mình.
module.exports = { // Change your rules accordingly to your coding style preferences. // https://prettier.io/docs/en/options.html semi: true, trailingComma: 'all', singleQuote: true, printWidth: 80, tabWidth: 2, useTabs: false,
}
  1. Cài đặt prettier:
  • Sau khi đã cài đặt Prettier Extention trên VS Code. Chúng ta cần cài bộ format mặc định là Prettier - Code Formatter
  • F1 sau đó nhập >Format Document With... vào chọn Configure Default Formatter rồi đến Prettier - Code Formatter

Ok. Sau khi cài xong Eslint và Prettier bạn cần phải thêm một đoạn "lint:es": "eslint . --ext ts,tsx,js", vào "scripts" trong package.json

  1. Setting cho VS code
  • Để tạo tự động lưu khi Save và format các eslint rules mà prettier không tự động format, và nó cũng lưu các cài đặt vs code cho những người dùng khác khi work với project đó.
  • Tạo file settings.json bên trong thư mục .vscode đặt ở thư mục gốc.
{ "editor.formatOnSave": true, "editor.codeActionsOnSave": { "source.fixAll.eslint": true }, "files.insertFinalNewline": true
}
  1. Cài đặt Stylelint:
  • Chúng ta cần tạo một file .stylelintrc.json trong folder gốc, để lưu cấu hình rules của chúng. Với nội dung:
{ "processors": ["stylelint-processor-styled-components"], "plugins": ["stylelint-a11y"], "rules": { "a11y/media-prefers-reduced-motion": true, "a11y/no-outline-none": true, "a11y/selector-pseudo-class-focus": true, "a11y/content-property-no-static-value": [true, { "severity": "warning" }], "a11y/font-size-is-readable": [true, { "severity": "warning" }], "a11y/line-height-is-vertical-rhythmed": [true, { "severity": "warning" }], "a11y/no-display-none": [true, { "severity": "warning" }], "a11y/no-spread-text": [true, { "severity": "warning" }], "a11y/no-obsolete-attribute": [true, { "severity": "warning" }], "a11y/no-obsolete-element": [true, { "severity": "warning" }], "a11y/no-text-align-justify": [true, { "severity": "warning" }], "a11y/media-prefers-color-scheme": [true, { "severity": "warning" }] }, "extends": [ "stylelint-config-standard", "stylelint-config-styled-components", "stylelint-config-prettier" ]
}
  • Cuối cùng cài các package stylint vào nhé.
npm i -D stylelint stylelint-a11y stylelint-config-prettier stylelint-config-standard stylelint-config-styled-components stylelint-processor-styled-components

hoặc với Yarn

yarn add -D stylelint stylelint-a11y stylelint-config-prettier stylelint-config-standard stylelint-config-styled-components stylelint-processor-styled-components
  • Giờ thì thêm "lint:style": "stylelint 'src/**/styled.ts' 'src/**/*.tsx'", vào "scripts" trong package.json

và cả "lint": "yarn lint:es && yarn lint:style" nữa nhé, tí nữa sẽ dùng tới.

  1. Cài đặt husky:
  • Để cài husky thì chúng ta cũng cần phải thằng bạn tri kỷ của nó lint-staged để có performance tốt nhất =)) Tiếp tục là câu lệnh quen thuộc

npm install --save-dev lint-staged husky

hoặc

yarn add -D lint-staged husky

"scripts" chúng ta thêm

"lint-staged": { "*.{ts,tsx,js,jsx}": [ "eslint --cache" ], "styled.ts": [ "stylelint --cache" ] },
"husky": { "hooks": { "pre-commit": "yarn lint-staged && yarn check:type" }
}

Trong lint-staged sẽ chúng sẽ thực thi các script ta đã viết ở trên, nếu như chúng pass qua hết các rules thì code chúng ta sẽ được đẩy lên, đảm bảo code luôn đúng rule và sạch sẽ. Tuy nhiên bạn cũng có thể thêm hậu tố --no-verify để pass mà không cần quan tâm rules.

Đến đây cũng mõi tay rồi :v Nếu có thắc mắc hay để lại comment bên dưới, mình sẽ cùng thảo luận nhé. Thank các bạn đã đọc ?

Bình luận

Bài viết tương tự

- vừa được xem lúc

Hãy sử dụng ESLint cho dự án của bạn!

. Bài viết gốc: https://manhhomienbienthuy.bitbucket.io/2018/May/20/we-should-use-eslint-in-project.html (đã xin phép tác giả ).

0 0 76

- vừa được xem lúc

Là lập trình viên, bạn đã từng nghe nói đến .editorconfig?

Hôm kia tình cờ lân la lên thư viện PaperCSS trên GitHub, mình phát hiện ra project của họ có sử dụng file .editorconfig. Tò mò vì chả biết đó là gì, mình bắt đầu tìm hiểu thử và thực sự bất ngờ về công dụng của nó. Và tìm hiểu .

0 0 42

- vừa được xem lúc

Nâng cao chất lượng code và hiệu quả làm việc nhóm với Husky, Lint-Staged, CommitLint

Chào mừng các bạn đã quay trở lại với blog của mình, lại là mình đây (dù chả ai biết mình là ai ). Hôm nay không Docker cũng chẳng VueJS , mà chúng ta sẽ cùng nhau tìm hiểu cách cải thiện chất lượng c

0 0 114

- vừa được xem lúc

Tận dụng tối đa 100% sức mạnh của ESLint (phần 1)

Nếu bạn là một JavaScript developer chân chính, một trong những điều quan trọng bạn cần biết là sử dụng Linter, cụ thể là ESLint. Nhưng sử dụng thế nào cho hợp lý, cho đúng cách, phát huy đúng tác dụn

0 0 86

- vừa được xem lúc

Tại sao phải sử dụng ESlint?

1. Lint là gì. 2. ESlint là gì.

0 0 114

- vừa được xem lúc

Tận dụng tối đa 100% sức mạnh của ESLint (phần 2)

Trong phần 1 mình đã giới thiệu sơ lược qua về ESLint là gì và cách setup cơ bản. Tiếp theo sau đây là nói về các rule cơ bản và vài mẹo hay giúp sử dụng ESLint tốt hơn nhé.

0 0 113