javascript - Sự khác nhau giữa plugins và extends trong eslint là gì?
Tôi không hiểu tại sao chúng ta có plugins và extends. Sự khác biệt giữa chúng là gì và tôi có cần cái này hay cái kia không?
Câu trả lời #1
extends sử dụng một tập tin cấu hình áp dụng một tập hợp các quy tắc khi bạn thêm nó vào tùy chọn extends. Ngược lại, một plugin cung cấp cho bạn một tập hợp các quy tắc mà bạn có thể áp dụng riêng lẻ tùy theo nhu cầu của mình. Chỉ có một plugin không bắt buộc bất kỳ quy tắc nào. Bạn phải chọn những quy tắc mà bạn cần. Một plugin có thể cung cấp cho bạn không có, một hoặc nhiều tập tin cấu hình. Nếu plugin cung cấp một tập tin cấu hình, thì bạn có thể tải nó trong phần extends sau khi thêm plugin vào phần plugins.
Về cơ bản, các plugin cung cấp cho bạn một số quy tắc đã được lập trình sẵn và bạn có thể chọn những quy tắc nào là liên quan. Chúng cũng có thể cung cấp các tệp cấu hình để áp dụng các quy tắc mà tác giả nghĩ là được nhóm hợp lý/ liên quan, nhưng việc cung cấp tệp cấu hình không bắt buộc đối với một plugin. Trong khi đó, extends cung cấp cho bạn khả năng áp dụng các quy tắc hàng loạt dựa trên các thông số kỹ thuật của tệp cấu hình.
Plugin ví dụ - eslint-plugin-react
{
"plugins": [
"react"
],
"extends": [
"eslint:recommended",
"plugin:react/recommended"
]
}
Cấu hình ví dụ - eslint-config-google
{
"extends": [
"google"
]
}
Câu trả lời #2
Ngoài câu trả lời hay của Shmit:
mở rộng
nói về việc mở rộng cấu hình nói chung, không chỉ các plugin. Các giá trị tiềm năng là:
"eslint:recommended""eslint:all"- Cấu hình có thể chia sẻ từ gói npm (
eslint-config-xxxhoặc tên có phạm vi) - Cấu hình plugin từ gói npm (
eslint-plugin-xxxhoặc tên có phạm vi) - Một tập tin cấu hình khác, như
"./my/path/.eslintrc.js"
Ký hiệu plugin: plugin:<tên gói>/<tên cấu hình>, ví dụ cho eslint-plugin-react:
"extends": ["plugin:react/recommended"]
Bằng cách mở rộng từ cấu hình plugin, chúng ta có thể nhận các quy tắc được đề xuất mà không cần thêm chúng thủ công.
plugin
Plugin là một gói npm eslint đặc biệt, cung cấp các định nghĩa quy tắc bổ sung (rules), environments, processors và configs cho các cấu hình khác nhau của các giá trị quy tắc được khuyến nghị/mặc định.
Thuộc tính plugins trong .eslintrc.js chỉ đơn giản là một cờ để kích hoạt một plugin nhất định sau khi cài đặt bằng npm i. Bây giờ chúng ta có thể tham chiếu đến các quy tắc của plugin, nhưng phải đặt tất cả giá trị rules một cách thủ công.
Hãy nghĩ plugins như một cách để kích hoạt plugin - để sử dụng các quy tắc của nó, bạn cần thêm plugin một lần trong chuỗi trong mọi trường hợp.
plugins không cần thiết trong cấu hình của bạn, nếu nó đã được định nghĩa trong một cấu hình mà bạn kế thừa bằng extends.
Ví dụ :
eslint-plugin-react đã chứa plugins: ['react'], do đó mục này không còn cần thiết trong cấu hình riêng và các quy tắc của plugin có thể được sử dụng trực tiếp.
