An open API service indexing awesome lists of open source software.

https://github.com/youngjuning-archive/eslint-config

A powerful esLint config based on airbnb
https://github.com/youngjuning-archive/eslint-config

airbnb react react-native typescript vue

Last synced: 2 months ago
JSON representation

A powerful esLint config based on airbnb

Awesome Lists containing this project

README

          

# @youngjuning/eslint-config

a powerful esLint config based on airbnb

> Please remove your eslint、prettier plugin first. All in @youngjuning/eslint-config

## Prettier

Dependencies:

```sh
$ yarn add @youngjuning/prettier-config -D
```

Config:

```js
// .prettierrc.js
module.exports = require('@youngjuning/prettier-config');
```

## Base

> support .js、.ts

Dependencies:

```sh
$ yarn add -D @youngjuning/eslint-config
```

Config:

```js
// .eslintrc.js
module.exports = {
extends: ['@youngjuning/eslint-config']
}
```

## React

> support .js、.ts、.jsx、.tsx、.html

Dependencies:

```sh
$ yarn add -D eslint-plugin-react \
eslint-plugin-react-hooks \
eslint-plugin-jsx-a11y \
eslint-plugin-import
```

Config:

```js
// .eslintrc.js
module.exports = {
extends: ['@youngjuning/eslint-config/react']
}
```

## React Native

> support .js、.ts、.jsx、.tsx

Dependencies:

```sh
$ yarn add -D eslint-plugin-react \
eslint-plugin-react-hooks \
eslint-plugin-jsx-a11y \
eslint-plugin-import \
eslint-plugin-react-native
```

Config:

```js
// .eslintrc.js
module.exports = {
extends: ['@youngjuning/eslint-config/react-native']
}
```

## Vue

> support .js、.ts、.vue

Dependencies:

```sh
$ yarn add -D @vue/cli-service eslint-plugin-vue @vue/eslint-config-airbnb
```

Config:

```js
// .eslintrc.js
module.exports = {
extends: ['@youngjuning/eslint-config/vue']
}
```

## miniprogram

> support .js、.ts

Config:

```js
// .eslintrc.js
module.exports = {
extends: ['@youngjuning/eslint-config/miniprogram']
}
```

## html

> support .js、.ts、.html

Dependencies:

```sh
$ yarn add -D eslint-plugin-html
```

Config:

```js
// .eslintrc.js
module.exports = {
extends: [...,'@youngjuning/eslint-config/html']
}
```

## More Config

### .eslintignore

```
!.eslintrc.js
!.prettierrc.js
```

### .editorconfig

```
# EditorConfig is awesome: http://EditorConfig.org

# top-most EditorConfig file
root = true

# Unix-style newlines with a newline ending every file
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
quote_type = single
trim_trailing_whitespace = true
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false

[*.gradle]
indent_size = 4

[BUCK]
indent_size = 4
```

### husky & lint-staged

```sh
$ yarn add -D husky lint-staged
```

```json
{
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"**/*.{js,jsx,ts,tsx}": [
"eslint --fix",
"git add"
],
// you can add wxml/html...
"**/*.{less,md,json}": [
"prettier --write",
"git add"
]
},
}
```

### vscode eslint 配置

禁用 formatOnSave,开启 source.fixAll.eslint

```json
{
"editor.formatOnSave": false,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
// 建议直接删掉 Prettier 插件
"prettier.disableLanguages": [
"javascript",
"javascriptreact",
"typescript",
"typescriptreact",
"vue"
],
}
```

### git autocrlf

为了解决换行符冲突的问题,强烈建议设置 `core.autocrlf` 为 `input`。为什么这么做请读一下 [Git 多平台换行符问题(LF or CRLF)](https://blog.konghy.cn/2017/03/19/git-lf-or-crlf/)

```sh
$ git config --global core.autocrlf input
```

## Related repos

- [@youngjuning/prettier-config](https://github.com/youngjuning/prettier-config)