当前位置:   article > 正文

[代码规范] eslint校验+自动格式化_pnpm eslint

pnpm eslint

一、安装

eslint:运行代码前检查语法、潜在bug等

prettier:代码格式化工具,例如检查缩进长度是4格还是2格,表达式,逗号等等

pnpm安装命令(包含了依赖的所有包):

pnpm install eslint eslint-plugin-vue eslint-config-prettier prettier eslint-plugin-import eslint-plugin-prettier eslint-config-airbnb-base -D

pnpm install typescript @typescript-eslint/parser @typescript-eslint/eslint-plugin eslint-import-resolver-alias @types/eslint @types/node -D

安装成功示例:

2022年10月11日18:21

+ prettier 2.7.1:prettier核心代码库

+ eslint 8.25.0 :ESlint核心代码库
+ eslint-config-airbnb-base 15.0.0 :airbnb的代码规范(依赖eslint-plugin-import )
+ eslint-config-prettier 8.5.0 :eslint 结合prettier的格式化
+ eslint-plugin-import 2.26.0 :项目里支持eslint
+ eslint-plugin-prettier 4.2.1 : 将prettier结合进入eslint的插件
+ eslint-plugin-vue 9.6.0 :eslint在vue里的代码规范

+ @types/eslint 8.4.6
+ @types/node 18.8.4
+ @typescript-eslint/eslint-plugin 5.40.0 :ESLint插件,包含各类定义好的检测ts代码的规范
+ @typescript-eslint/parser 5.40.0 : ESLint的解析器,用于解析ts,从而检查和规范ts代码
+ eslint-import-resolver-alias 1.1.2 :让我们在import的时候可以使用@别名

2022年10月11日 20:19

发现还需要安装一个包 :eslint/create-config

同时要配合安装 VSCode插件:

1.ESLint

2.Prettier - Code fromatter

二、配置

可以在package.json中配置一个新的脚本命令 :"lint:create": "eslint --init"

执行配置的命令,或者直接执行eslint --init,根据提示选择需要的一些规则配置

随后能看到目录中自动增加了一个eslintrc.cjs的配置文件。

在文件中可进行详细的规则配置

  1. module.exports = {
  2. // 检测环境 ,浏览器、es、node
  3. "env": {
  4. "browser": true,
  5. "es2021": true,
  6. "node": true
  7. },
  8. // 用了哪些别人定义好的规则
  9. extends: ['plugin:vue/vue3-strongly-recommended', 'airbnb-base', 'prettier'],
  10. // "extends": [ "eslint:recommended","plugin:vue/essential","plugin:@typescript-eslint/recommended"],
  11. // ESLint 会对我们的代码进行校验,而parser的作用是将我们写的代码转换为ESTree(AST),ESLint 会对ESTree进行校验
  12. parser: "vue-eslint-parser",
  13. // 解析器配置
  14. "parserOptions": {
  15. // es的版本号,或者年份都可以,latest代表"最近的"
  16. "ecmaVersion": "latest",
  17. "parser": "@typescript-eslint/parser",
  18. // 源码类型,默认是script,es模块使用module
  19. "sourceType": "module",
  20. // 额外的语言类型
  21. ecmaFeatures:{
  22. tsx:true,
  23. jsx:true
  24. },
  25. },
  26. // 全局自定义的宏,这样在源文件中使用全局变量就不会报错或者警告
  27. globals:{
  28. defineProps:"readonly",
  29. defineEmits:"readonly",
  30. defineExpose:"readonly",
  31. withDefaults:"readonly"
  32. },
  33. // 插件
  34. // 前缀eslint-plugin- 可以省略
  35. // vue官方提供了一个ESLint插件 eslint-plugin-vue,它提供了 parser 和 rules
  36. // parser为vue-eslint-parser,放在上面的parser字段里
  37. // rules放在extends字段里,选择合适的规则
  38. "plugins": [
  39. "vue",
  40. "@typescript-eslint"
  41. ],
  42. settings:{
  43. "import/resolver":{
  44. alias:{
  45. map:[["@","./src"]]
  46. }
  47. },
  48. // 允许的扩展名
  49. "import/extensions":[".js",".jsx",".ts",".tsx",".mjs"]
  50. },
  51. // 自定义规则,覆盖上面extends继承的第三方规则,根据自己项目灵活定义
  52. "rules": {}
  53. }

其中,rules是自定义规则

但自定义规则中可以写些什么?参考什么写?

暂时没找到,有人知道吗?评论区求指点

三、使用

需要在package.json中,增加一个脚本命令:

"lint":"eslint \"src/**/*.{js,vue,ts}\" --fix"

执行lint的时候,就会自动检测出格式有问题的代码,甚至会自动修复

例如你写了:a = a+1

控制台执行lint的时候,a += 1

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/697302
推荐阅读
相关标签
  

闽ICP备14008679号