@knk/eslint-plugin
ESLint configuration and custom rules for knk
Configs
Usage: in your ESLint config file, add { "extends": ["plugin:@knk/<name>"] }
or { "extends": ["plugin:@knk/eslint-plugin/<name>"] }
(the two are equivalent).
-
react
: For@knk/*
and related packages-
react--legacy
: Likereact
but requiring anI
prefix for interfaces -
node
: Likereact
but for packages which run in a Node environment (not the browser) -
node--legacy
: Likenode
but requiring anI
prefix for interfaces
-
Helpers for customizing configuration are exported under a configHelpers
object.
Rules
ban-imports
Ban importing from certain paths or modules. You can either ban the entire path, or only certain names. (Inspired by TSLint's import-blacklist
.)
Requires one or more options objects. Either path
or pathRegex
is required.
-
path
(string
): Path or module to ban importing from (non-regex) -
pathRegex
(string
): Regex for path or module to ban importing from -
names
(string[]
, optional): If provided, only ban imports of these names. Otherwise, ban all imports from the path. -
message
(string[]
, optional): Custom message to show with errors
Example:
"@knk/ban-imports": [
"error",
{ "path": "lodash" },
{ "path": "foo", "names": ["bar", "baz"] },
{ "pathRegex": "^\.", message: "no relative imports" },
{ "pathRegex": "^\.\./(foo|bar)$", "names": ["baz"] }
]
deprecated-keyboard-event-props
Prevent using deprecated KeyboardEvent
props which
and keyCode
, and recommend using @knk/keyboard-key
instead.
max-len
Enforces max line length, more performantly than ESLint's max-len
.
This rule is significantly faster than the default max-len
rule because it does not support:
- Expanding tabs (only handles spaces for indentation)
- Multi-byte unicode characters (they will be counted as multiple characters)
- Extra options for handling comments, strings, or URLs
(Skipping these extra features lets us do a basic string length check before running any regular expressions or other extra logic, which makes the huge majority of line length checks very fast.)
Options
The rule requires an options object containing:
-
max
(required): the maximum line length -
ignorePatterns
(optional): ignore the line if it matches any of these regular expressions
no-global-react
Ban references to the React
global namespace (in favor of explicitly importing React). Implicit global references cause problems for API Extractor and potentially other tools.
no-tslint-comments
Ban tslint:disable
and tslint:enable
comments.
no-visibility-modifiers
Prevent visibility modifiers (public
, protected
, private
) from being specified on class members/methods.