全局代码规范配置 ( Eslint )

news/2024/10/19 18:26:39/

项目团队开发 为了保证统一的代码格式规范,可以借助两个插件以及 eslint 自由配置进行

首先需要在 vscode 安装 

Eslint           Prettier - Code formatter

安装所需依赖

pnpm install --save-dev eslint eslint-plugin-react eslint-plugin-react-hooks eslint-plugin-jsx-a11y eslint-plugin-import

pnpm install --save-dev --save-exact prettier

------------------------------------------------------------------------------------------------------------------------

 1)首先在根目录下创建   .eslintrc.cjs 文件,这个文件中用来配置你们的代码格式规范,内容如下,以下是我自己个人习惯的配置,可以根据你们的实际需求更改
module.exports = {env: {browser: true,es2021: true,node: true,},parser: '@typescript-eslint/parser',extends: ['eslint:recommended','plugin:react/recommended','plugin:react-hooks/recommended','plugin:jsx-a11y/recommended','prettier','plugin:@typescript-eslint/recommended'],parserOptions: {ecmaFeatures: {jsx: true,},ecmaVersion: 12,sourceType: 'module',},plugins: ['react', 'react-hooks', 'jsx-a11y','import'],settings: {react: {version: 'detect',},},rules: {// "off"可以替换成0,代表关闭该规则// "warn"可以替换成1,代表打开规则,提示警告,但不会报错// "error"可以替换成2,代表打开规则,直接报错'no-var': 2, // 不能使用var声明变量'no-extra-semi': 2, // 禁止多余的冒号semi: 2,'semi-style': ['error', 'last'],'@typescript-eslint/no-extra-semi': 2,// '@typescript-eslint/indent': ['error', 2], // 缩进 2quotes: ['error', 'single'], // 字符串使用单双引号,double,single'no-dupe-keys': 2, // 在创建对象字面量时不允许键重复 {a:1,a:1}'no-dupe-args': 2, // 函数参数不能重复'no-const-assign': 2, // 禁止修改const声明的变量'no-eq-null': 2, // 禁止对null使用==或!=运算符'no-eval': 1, // 禁止使用eval'no-ex-assign': 2, // 禁止给catch语句中的异常参数赋值'no-extend-native': 2, // 禁止扩展native对象'no-extra-bind': 2, // 禁止不必要的函数绑定'no-inline-comments': 0, // 禁止行内备注'no-inner-declarations': [2, 'functions'], // 禁止在块语句中使用声明(变量或函数)'no-invalid-regexp': 2, // 禁止无效的正则表达式'no-invalid-this': 2, // 禁止无效的this,只能用在构造器,类,对象字面量'no-irregular-whitespace': 2, // 不能有不规则的空格'no-labels': 2, // 禁止标签声明'no-lone-blocks': 2, // 禁止不必要的嵌套块'no-multi-spaces': 1, // 不能用多余的空格'no-multi-str': 2, // 字符串不能用\换行'no-multiple-empty-lines': [1, { max: 2 }], // 空行最多不能超过2行'no-native-reassign': 2, // 不能重写native对象'no-negated-in-lhs': 2, // in 操作符的左边不能有!'no-nested-ternary': 0, // 禁止使用嵌套的三目运算'no-new': 1, // 禁止在使用new构造一个实例后不赋值'no-new-func': 1, // 禁止使用new Function'no-new-object': 2, // 禁止使用new Object()'no-new-require': 2, // 禁止使用new require'no-new-wrappers': 2, // 禁止使用new创建包装实例,new String new Boolean new Number'no-redeclare': 2, // 禁止重复声明变量'no-regex-spaces': 2, // 禁止在正则表达式字面量中使用多个空格 /foo bar/'no-restricted-modules': 0, // 如果禁用了指定模块,使用就会报错'no-throw-literal': 2, // 禁止抛出字面量错误 throw 'error';// 'no-undef': 1, // 不能有未定义的变量'no-undef-init': 2, // 变量初始化时不能直接给它赋值为undefined// 'no-undefined': 2, // 不能使用undefined'no-unexpected-multiline': 2, // 避免多行表达式'no-param-reassign': ['error', { props: false }], // 防止对函数参数进行重新赋值'no-console': 'off', // 不进行检查console.log'import/prefer-default-export': 'off',// 禁止使用递增和递减运算符(++和--)'no-plusplus': ['error',{allowForLoopAfterthoughts: true,},],'@typescript-eslint/ban-types': 'off','react/display-name': 'off','react/jsx-uses-react': 'off','react/react-in-jsx-scope': 'off','import/extensions': 'off','import/no-unresolved': 'off','import/no-extraneous-dependencies': ['error', { devDependencies: true }], // 检测项目中导入的外部模块是否被正确地列为项目的依赖项// 关闭variable必须全部大写规则'@typescript-eslint/naming-convention': ['error',{selector: 'variable',modifiers: ['const'],format: null,},],},
};
2)还是在根目录创建 .eslintignore ;这个文件内部写的是你不需要格式化的文件,比如写上mock,那么 mock 这个文件里面的代码就不会受到格式化的影响,我的配置如下
node_modules
dist
mock
public
3)在根目录创建 .prettierrc.js ;我的配置如下( 照搬就可以 )
module.exports = {semi: false,singleQuote: true,trailingComma: 'all',printWidth: 80,tabWidth: 2,
};
4)在 vscode 的 settings.json 加入以下代码
"editor.codeActionsOnSave": {"source.fixAll.eslint": true,"source.fixAll.stylelint": true,"source.organizeImports": true
}

全部配置好之后可以运行

npx eslint .
npx prettier --check .

检查是否配置成功,如果出现报错,根据报错安装所对应的依赖包就可以。

如有特需的配置也可前往 Eslint 官网去查看详细:Configure ESLint - ESLint - Pluggable JavaScript Linter

时小记,终有成。 


http://www.ppmy.cn/news/1218829.html

相关文章

每天学习一点点之从 SonarQube Bug 看对线程中断异常的处理

最近在基于 SonarQube 对代码进行质量优化,说实话,之前觉得 SonarQube 这种很无聊,但最近静下心来看了一些扫描出来的问题后,发现这种工具作用还是挺大的,能够帮助我们找到代码中的隐藏缺陷,从而夯实基础。…

【广州华锐互动】地震防灾减灾科普3D虚拟展厅:向公众普及地震安全知识

在面对自然灾害时,我们都需要有足够的知识和准备来保护自己和他人。这就是为什么地震安全知识的普及如此重要。然而,传统的教育方法可能无法满足所有人的需求,特别是在这个数字化的时代。为了解决这个问题,广州华锐互动制作开发了…

webpack打包时使用import引入element,element地址信息不会被打包到budle中而axios就会呢?

Webpack 打包时,对于 import 引入的库(例如 element),其地址信息不会被打包到 bundle 中,这是因为库的地址信息是在运行时动态解析的,而不是在编译时确定的。 当你在代码中使用 import 引入一个库时&#…

Linux编写一个极简版本的Shell

Linux编写一个极简版本的Shell 📟作者主页:慢热的陕西人 🌴专栏链接:Linux 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 本博客主要内容在Linux环境下&#xff…

特别关注什么是CPC认证,美国CPSC测试有哪些常见问题解析

CPC认证是Children’s Product Certificate的英文简称,CPC证书就类似于国内的质检报告,在通过相关检测、出具报告后同时可出具的一纸证书,证书列明进/出口商信息,商品信息、以及已做过的相关检测项目及其依据的法规标准。…

CSS清除浮动

.clearfix:after {content: ;display: block;height: 0;clear: both;visibility: hidden; }.clearfix {zoom: 1; }.float-left {float: left; }.float-right {float: right; } 浮动的原理是让图片脱离文档流,直接浮在上面。 一般布局是让内容来自动填充高度&#x…

[运维工具]ubuntu下迁移home目录至新的分区教程详解

ubuntu下迁移home目录至新的分区教程详解 前言 首先声明一下,因为此教程涉及到用户重要资料数据,所以操作前: 数据无价,请一定要先备份!数据无价,请一定要先备份!数据无价,请一定…

什么是集成测试?集成的方法有哪些?

前言 综合测试整合测试非常复杂,需要一些开发和逻辑技能。的确如此!那么把这个测试整合到我们的测试策略中的目的是什么呢?这个问题我们先不着急回答,让我们一步步往下看你就知道了。 为什么要进行集成测试? 以下是一…