1.0.11 • Published 5 months ago

eslint-plugin-config-base v1.0.11

Weekly downloads
-
License
ISC
Repository
github
Last release
5 months ago

eslint-plugin-config-base

使用及初始化

安装

npm install eslint-plugin-config-base -D

如果项目使用typescript

项目根目录下tsconfig.json配置修改,参考如下其他根据项目需要配置: { "compilerOptions": { "jsx": "preserve", // 这里需要改成preserve "target": "esnext", "module": "esnext", "baseUrl": "./", "moduleResolution": "node", "strictNullChecks": true, // 这里需要开启 "importHelpers": true, "paths": { "@/": [ "src/" ] }, "lib": "esnext", "dom", "dom.iterable", "scripthost" }, "include": // 这里需要配置 "src//*.tsx", "src//.ts", "src/**/.js", "src//*.jsx", "src//*.vue" , "exclude": "node_modules" } .eslintrs.js配置,如果继承了其他插件,plugins、extends中最好请将本插件放到最后,因为本插件关闭了部分vue、typescript、sonarjs、eslint的规则 module.exports = { plugins: 'config-base', extends: 'plugin:config-base/recommended', }

这里分为两个校验,一个校验代码合规性【目录:.husky/pre-commit.sh】,一个校验提交的合规性【目录:.husky/commit-msg.sh一次提交不能超过1000行代码,必填任务单,任务单格式】

如果使用husky和lint-staged结合校验,配置package.json

  • 默认使用husky和lint-staged结合校验,配置如下: pckage.json文件中加上 "husky": { "hooks": { "pre-commit": "lint-staged" } }, "lint-staged": { "src/*/.{vue,jsx,js,ts,tsx}": "prettier --write", "eslint --fix", "git add ." }, pckage.json中scripts对象下添加以下可执行脚本,先执行1再执行2 1、"config-base:husky": "config-base husky" 执行完后会在项目根目录下创建.husky文件夹 2、"copy-commit-all": "config-base copy", 将pre-commit.sh和commit-msg拷贝到当前项目录.husky下

如果不使用husky,使用其他的插件校验的话,可以将需要的生命周期钩子代码拷贝到自己想要的目录,如果代码不完全适用,可以自行修改钩子中的代码

举个例子:将钩子函数直接拷贝到项目根目录的githook文件夹下 1、"copy-commit-all": "config-base copy ./githook", 将pre-commit.sh和commit-msg拷贝到当前项目./githook下 2、如果只需要拷贝pre-commit.sh文件,"copy-pre-commit": "config-base copy-pre-commit ./githook", 将pre-commit.sh拷贝到当前项目./githook下 3、如果只需要拷贝commit-msg.sh文件,"copy-ommit-msg": "config-base copy-commit-msg ./githook", 将commit-msg.sh拷贝到当前项目./githook下

eslint开启校验规则

规则描述状态
for-direction禁止永远无法停止的for循环error
no-var要求使用let或consterror
prefer-const常量类型数据使用const定义error
no-shadow-restricted-nameserror
no-global-assignerror
no-extra-boolean-casterror
no-empty-patternerror
no-duplicate-caseerror
no-dupe-else-iferror
no-constant-conditionerror
no-cond-assignerror
no-class-assignerror
no-debuggererror
eqeqeqerror
no-return-assignerror
max-lineserror
max-lenerror
no-unneeded-ternaryerror
no-evalerror
no-unused-expressionserror
no-use-before-defineerror
max-lines-per-functionerror
no-useless-catchwarn
no-unsafe-optional-chainingwarn
no-self-assignwarn
no-extra-parenswarn
default-case要求switch函数提供default条件warn
no-alert禁止使用alertwarn
no-console禁止打印日志warn
no-duplicate-imports禁止重复的导入warn
max-depth嵌套深度最大10warn
max-params函数最多7个参数warn
default-case-last要求switch函数的default条件放到最后warn

prettier 规则配置

规则描述
singleQuotetrue
semitrue
printWidth180
tabWidth2
trailingCommaes5
bracketSameLinefalse
jsxBracketSameLinetrue
jsxSingleQuotetrue
arrowParensavoid
htmlWhitespaceSensitivityignore
endOfLineauto
vueIndentScriptAndStyletrue

vue开启的规则

规则描述等级
jsx-uses-vars防止jsx中使用的变量标记为未使用error
no-dupe-keys禁止重复字段名error
no-dupe-v-else-if禁止重复条件error
no-duplicate-attributes禁止属性重复error
no-mutating-props禁止修改组件属性error
no-ref-as-operand不允许使用ref()包装的值作为操作数error
no-reserved-component-names禁止在组件定义使用保留关键字error
no-reserved-keys禁止覆盖保留关键字error
no-reserved-props不允许在props中使用保留关键字error
no-side-effects-in-computed-properties禁止计算属性中的副作用error
no-unused-component禁止注册模板中未使用的组件warn
no-unused-vars禁止使用v-for指令或作用域属性的未使用变量定义warn
no-use-computed-property-like-method禁止像使用方法一样使用计算属性error
require-render-return要求render返回结果error
require-slots-like-functions强制将solts的属性用作函数error
return-in-computed-preoperty强制在计算属性中存在return语句error

typescript开启的规则

规则描述等级
@typescript-eslint/await-thenable要求await用于thenable对象,比如Promiseerror
@typescript-eslint/require-array-sort-compare确保对原生排序方法都提供比较的回调函数error
@typescript-eslint/no-unnecessary-condition确保代码中出现不不必要的检查条件时报告错误,如总是返回true的条件error
@typescript-eslint/no-unused-vars不允许使用未使用的变量error
@typescript-eslint/prefer-as-const强制在字面量类型上使用consterror
@typescript-eslint/consistent-type-imports确保类型倒入和值导入分开error
@typescript-eslint/ban-types不允许某些类型warn
@typescript-eslint/no-extra-non-null-assertion不允许额外的非空断言warn
@typescript-eslint/no-inferrable-types确保原始类型从已初始化或已默认的声明中省略warn

sonar开启的规则

规则描述级别
sonarjs/no-all-duolicated-branches条件结构中所有的分支不应该有相同的实现error
sonarjs/no-duolicated-branches条件结构中的两个分支不应该有相同的实现error
sonarjs/no-identical-conditions条件结构中不应该有相同的条件error
sonarjs/no-identical-functions函数不应该有相同的实现error
sonarjs/no-existent-operator=+、=—、=!不可用error
sonarjs/no-duolicate-string字符串重复不要超过3次warn
sonarjs/prefer-immediate-return局部变量不应声明后立即抛出或返回warn
sonarjs/prefer-single-boolean-return布尔表达式的返回不应该包装成if-else的形式warn
sonarjs/no-redundant-boolean布尔值不应该用于比较warn
sonarjs/no-inverted-boolean-check布尔检查不应倒置warn

no-useless-assign开启的规则

规则描述级别
no-useless-assign/no-useless-assign不允许无用的赋值error