husky;lint-staged;eslint配置&原理;eslint规则开发。
摘要&心得
- eslint
- eslint配置文件中的extends字段代表额外开启的规则。
- eslint:recommended
- Google JavaScript Style Guide
- Airbnb JavaScript Style Guide
- ESLint 是基于静态语法分析(AST)进行工作的
- 采用事件发布订阅模式,为所有规则的选择器添加监听事件
- eslint配置文件中的extends字段代表额外开启的规则。
husky & lint-staged
- husky 就是 Git 的一个钩子,在 Git 进行到某一时段时,可以交给开发者完成某些特定的操作。
- 在整个项目上运行 Lint 会很慢,我们一般只想对更改的文件进行检查,此时就需要使用到 lint-staged
"scripts": {
"lint": "eslint --debug src/",
"lint:write": "eslint --debug src/ --fix",
"prettier": "prettier --write src/**/*.js"
},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"*.(js|jsx)": ["npm run lint:write", "npm run prettier", "git add"]
},
eslint规则开发
module.exports = {
meta: {
docs: {
description: '禁止块级注释',
category: 'Stylistic Issues',
recommended: true
}
},
create (context) {
const sourceCode = context.getSourceCode()
return {
Program () {
const comments = sourceCode.getAllComments()
const blockComments = comments.filter(({ type }) => type === 'Block')
blockComments.length && context.report({
message: 'No block comments'
})
}
}
}
}
一条规则就是一个 node 模块,它由 meta 和 create 组成。
- meta 包含了该条规则的文档描述
- create 接受一个 context 参数,返回一个对象
- context 对象为当前执行扫描到的代码
- 通过context选择器获取当前需要的内容