react 项目使用typescript语言,配置eslint(代码规范) airbnb(规范风格) prettier(美化)。
vscode或者sublime安装扩展
安装扩展eslint和prettier。
在vscode 配置配置添加,保存时会自动fix
"editor.codeActionsOnSave": {
"source.fixAll": true
},
yarn安装依赖
- 全局安装eslint和prettier:yarn add global eslint prettier
- 项目根目录安装:yarn add eslint prettier airbnb
配置eslint
在项目根目录:sudo eslint --init,会提示选择的风格如下图,eslint版本不一样选择风格有差异,成功后在根目录会生成一个.eslintrc.js文件
module.exports = {
"env": {
"browser": true,
"es6": true
},
"extends": [
"eslint:recommended",
"plugin:react/recommended",
"plugin:@typescript-eslint/eslint-recommended"
],
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
},
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaFeatures": {
"jsx": true
},
"ecmaVersion": 2018,
"sourceType": "module"
},
"plugins": [
"react",
"@typescript-eslint"
],
"rules": {
}
};
配置prettier
- 安装依赖 yarn add eslint-config-prettier prettier
- 在项目根目录新建文件.prettierrc
{
"printWidth": 80, //一行的字符数,如果超过会进行换行,默认为80
"tabWidth": 2, //一个tab代表几个空格数,默认为8
"useTabs": false, //是否使用tab进行缩进,默认为false,表示用空格进行缩减
"singleQuote": false, //字符串是否使用单引号,默认为false,使用双引号
"semi": true, //行位是否使用分号,默认为true
"trailingComma": "none", //是否使用尾逗号,有三个可选值"<none|es5|all>"
"bracketSpacing": true, //对象大括号直接是否有空格,默认为true,效果:{ foo: bar }
"parser": "babylon" //代码的解析引擎,默认为babylon,与babel相同。
}
- 修改.eslintrc.js文件
extends: [
'prettier', // 添加prettier
'eslint:recommended',
'plugin:react/recommended',
'plugin:@typescript-eslint/eslint-recommended',
],
配置airbnb
- 安装依赖:yarn add eslint-config-airbnb eslint-plugin-jsx-a11y eslint-plugin-react eslint-plugin-import
- 修改.eslintrc.js文件,查看airbnb规则
extends: [
'eslint:recommended',
'airbnb', // 添加prettier
'prettier',
'plugin:react/recommended',
'plugin:@typescript-eslint/eslint-recommended',
],
// 添加settings 因为react 使用typescript文件为.tsx
settings: {
'import/resolver': {
node: {
extensions: ['.mjs', '.js', '.json', '.tsx'],
},
},
'import/extensions': ['.js', '.mjs', '.jsx', '.tsx'],
},
// 修改rules规则
rules: {
'react/jsx-filename-extension': [1, { extensions: ['.js', '.tsx'] }], // 在文件写jsx代码
'import/extensions': [ // import 导入规则
'error',
'ignorePackages',
{
js: 'never',
mjs: 'never',
jsx: 'never',
tsx: 'never',
},
],
}
在package.json中添加
"scripts": {
...
"lint": "eslint --ext --fix .js,.tsx src", // 添加
"fix": "npm run lint" // 添加
},