Files
mostlymatter/webapp/platform/eslint-plugin/README.md
Harrison Healey ff929e4a15 Move the shared ESLint plugin/config into the monorepo (#24670)
* Move the shared ESLint plugin/config into the monorepo

* Add peer dependencies to ESLint plugin
2023-10-05 14:47:51 -04:00

56 строки
1.5 KiB
Markdown

# @mattermost/eslint-plugin
An ESLint plugin containing the configuration used by Mattermost as well as support for custom rules specific to the Mattermost code base.
## Custom Rules
### no-dispatch-getstate
Prevents passing a [redux](https://redux.js.org/) store's `getState` into its `dispatch` as an unnecessary second argument.
We started doing this accidentally at some point because of a misunderstanding about how [redux-thunk](https://github.com/reduxjs/redux-thunk) worked, so this stops anyone from making that same mistake again.
Examples of **incorrect** code for this rule:
```javascript
export function someAction() {
return (dispatch, getState) => {
dispatch(doSomething(), getState);
};
}
```
Examples of **correct** code for this rule:
```javascript
export function someAction() {
return (dispatch) => {
dispatch(doSomething());
};
}
```
### use-external-link
Ensures that any link which opens a URL outside of Mattermost using `target="_blank"` uses the `ExternalLink` component.
Examples of **incorrect** code for this rule:
```javascript
export function SomeLink() {
return (
<a
href="https://example.com"
target="_blank"
rel="noopener noreferrer"
/>
);
}
```
Examples of **correct** code for this rule:
```javascript
import ExternalLink from 'components/external_link';
export function SomeLink() {
return <ExternalLink href="https://example.com"/>;
}
```