1.前言
继上一篇文章基本已经搭建完一个简单的React项目的,这边文章主要是讲项目的代码规范
2.使用eslint规范代码
2.1.安装依赖
yarn add eslint @types/eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin --dev
eslint
eslint核心代码
@types/eslint
eslint的类型定义
@typescript-eslint/parser
eslint解析器,用于解析typescript,从而检查和规范Typescript代码
@typescript-eslint/eslint-plugin
eslint插件,包含了各类定义好的检测Typescript代码的规范
2.2.eslint配置
在工程目录下新建.eslintrc.js
文件,包含eslint的配置
/**
* @type {import('eslint').Linter.BaseConfig}
*/
module.exports = {
parser: '@typescript-eslint/parser', // 定义ESLint的解析器
extends: ['plugin:react/recommended', 'plugin:@typescript-eslint/recommended'], // 定义文件继承的子规范
plugins: ['@typescript-eslint'], // 定义该eslint文件所依赖的插件
env: {
// 指定代码的运行环境
browser: true,
node: true,
}
};
2.3.eslint React配置
/**
* @type {import('eslint').Linter.BaseConfig}
*/
module.exports = {
...
settings: {
//自动发现React的版本,从而进行规范react代码
react: {
pragma: 'React',
version: 'detect',
},
},
parserOptions: {
//指定ESLint可以解析JSX语法
ecmaVersion: 2019,
sourceType: 'module',
ecmaFeatures: {
jsx: true,
},
},
};
3.结合Prettier与Eslint格式化代码
3.1.安装依赖
yarn add prettier eslint-config-prettier eslint-plugin-prettier --dev
prettier
插件的核心代码
eslint-config-prettier
解决ESLint中的样式规范和prettier中样式规范的冲突,以prettier的样式规范为准,使ESLint中的样式规范自动失效
eslint-plugin-prettier
将prettier作为ESLint规范来使用
3.2.Prettier配置
在工程目录下新建.prettierrc
文件
{
"useTabs": true,
"eslintIntegration": true,
"stylelintIntegration": true,
"tabWidth": 2,
"singleQuote": true,
"semi": true,
"printWidth": 150
}
修改.eslintrc.js
文件,增加配置
/**
* @type {import('eslint').Linter.BaseConfig}
*/
module.exports = {
parser: '@typescript-eslint/parser', // 定义ESLint的解析器
extends: [
'plugin:react/recommended',
'plugin:@typescript-eslint/recommended',
'prettier/@typescript-eslint',
'plugin:prettier/recommended'], // 定义文件继承的子规范
....
};
prettier/@typescript-eslint
使得@typescript-eslint中的样式规范失效,遵循prettier中的样式规范
plugin:prettier/recommended
使用prettier中的样式规范,且如果使得ESLint会检测prettier的格式问题,同样将格式问题以error的形式抛出
4.vscode中集成eslint配置
4.1.配置setting.json
先安装eslin
t的插件,然后修改setting.json
文件,我配置在当前工作区,没有配到全局的用户配置
{
"eslint.codeAction.showDocumentation": {
"eslint.enable": true, //是否开启vscode的eslint
"eslint.autoFixOnSave": true, //是否在保存的时候自动fix eslint
"eslint.options": {
//指定vscode的eslint所处理的文件的后缀
"extensions": [".js", ".vue", ".ts", ".tsx"]
},
"eslint.validate": [
//确定校验准则
"javascript",
"javascriptreact",
{
"language": "html",
"autoFix": true
},
{
"language": "vue",
"autoFix": true
},
{
"language": "typescript",
"autoFix": true
},
{
"language": "typescriptreact",
"autoFix": true
}
]
}
}
5.参考资料
查阅还有一些约束手段可以管控代码提交等,个人不太喜欢这种强制管控的方式,所有没有写入进来,查看链接
juejin.cn/post/684490…
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!