eslint-config-blockabc
Version:
A All-in-One eslint config project based on Standard Style
113 lines (89 loc) • 3.27 kB
Markdown
# eslint-config-blockabc

[](http://standardjs.com)
An All-in-One ESLint [Shareable Config](http://eslint.org/docs/developer-guide/shareable-configs) project, based on [Standard Style](https://standardjs.com/).
This project including ESLint Config for JavaScript, TypeScript, Vue, Nuxt.
## Usage
### JavaScript
1. install
```bash
npm install eslint-config-blockabc eslint @babel/eslint-parser eslint-config-standard eslint-plugin-import eslint-plugin-node eslint-plugin-promise eslint-plugin-standard -D
```
2. Add this to your .eslintrc file
```json
{
"extends": ["blockabc"]
}
```
### Typescript
Build on **[JavaScript](#javascript)**:
```bash
npm install typescript @typescript-eslint/eslint-plugin @typescript-eslint/parser -D
```
```json
{
"extends": ["blockabc/typescript"]
}
```
### Vue
Build on **[JavaScript](#javascript)**:
```bash
npm install vue-eslint-parser eslint-plugin-vue eslint-config-standard-jsx eslint-plugin-react -D
```
```json
{
"extends": ["blockabc/vue"]
}
```
### Nuxt
Build on **[Vue](#vue)**:
```bash
npm install eslint-plugin-nuxt -D
```
```json
{
"extends": ["blockabc/nuxt"]
}
```
### Vue-TypeScript
Build on **[Vue](#vue)** & **[TypeScript](#typescript)**
```json
{
"extends": ["blockabc/vue-ts"]
}
```
### Nuxt-TypeScript
Build on **[Nuxt](#nuxt)** & **[TypeScript](typescript)**
```json
{
"extends": ["blockabc/nuxt-ts"]
}
```
## FAQ
1. Sequence in eslintrc's `extends` field is important. Your config should always be the last one in `extends` array. [https://github.com/eslint/eslint/issues/9191](https://github.com/eslint/eslint/issues/9191)
2. You can run `eslint --print-config [file]` to see active eslint rules for specific file.
## Notable
### Vue
1. props 要有默认值
### JavaScript
1. 函数定义的括号之前要有空格。
除了社区规范和风格倾向,该规则可以方便代码搜索:搜 `func(` 可以搜到所有函数调用,搜 `func (` 可以搜到函数定义。
## Todo
1. [vue/require-default-prop](https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/require-default-prop.md)
按理说 String 类型的 props 应该也可以没有默认值。可以给 eslint-plugin-vue 提一个 PR。
2. [vue/mustache-interpolation-spacing](https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/mustache-interpolation-spacing.md)
该规则要求插值的花括号两边有空格,但是是否是必须的呢?这样风格上的好处和坏处分别是什么?
3. vue slots/event
可以增加一个规则,使得所有的 slots 和 events 都必须显式地在 vue 配置上写出,方便后续维护者知道该组件的 "API"。
```js
export default {
events: ['input', 'change'],
slots: ['default', 'title'],
mounted() {
this.$emit('input', 0)
}
}
```
4. vue/attributes-order
该规则有点奇怪,没有按照 order 的意图去排序,代码应该是有问题的,有时间可以去看一下,提个 PR。
[attributes-order.js](https://github.com/vuejs/eslint-plugin-vue/blob/5d26e943bcba5544d820e9152a796582cc9a4beb/lib/rules/attributes-order.js)