1. eslint是前端开发中必不可少的一个代码规则检查工具。可以规范化我们的代码。方便我们在大型项目中代码的规范化。

配置

常用配置文件:

  1. module.exports = {
  2. env:{
  3. jest: true,
  4. node: true,
  5. browser: true,
  6. es2021: true
  7. },
  8. extends: ["airbnb-base","prettier"],
  9. parser: "@typescript-eslint/parser",
  10. plugins: ["@typescript-eslint","prettier","import"],
  11. rules: {
  12. "prettier/prettier": "error",
  13. "import/extensions": [
  14. "error",
  15. "ignorePackage",
  16. {
  17. js: "never",
  18. jsx: "never",
  19. ts: "never",
  20. tsx: "never"
  21. }
  22. ]
  23. },
  24. settings: {
  25. "import/resolver": {
  26. node: {
  27. extensions: [".js", ".jsx", ".ts", ".tsx"]
  28. }
  29. }
  30. }
  31. }

添加Prettier支持:

当我们在项目中添加了Prettier的时候,Prettier的格式化内容和Eslint的格式化内容往往是不一致的。当我们使用Prettier格式化文件之后,通常是不能通过Eslint的检查的。为了解决这个问题,我们需要让PrettierEslint整合起来。

安装必要的依赖:

要把Eslint和Prettier整合起来,我们需要安装几个依赖包:eslint-config-prettiereslint-plugin-prettier

修改文件配置:

在我们安装完依赖后,我们需要修改Eslint的配置文件才能使得Eslint的配置生效,把Eslint和Prettier整合在一起。需要修改的有extendspluginsrules三部分内容。配置后的内容应该是下面这个样子的:

  1. module.exports = {
  2. extends: [...,'prettier'],
  3. plugins: [...,'prettier'],
  4. rules:{
  5. ...,
  6. 'prettier/prettier': 'error'
  7. }
  8. }

注:如果使用了airbnb-base的扩展,一定要把prettier放在这些扩展之后!!!

常见问题

Jest

在使用Eslint和Jest组合开发的时候,如果我们是自己配置的Eslint文件,那么就有可能会遇到类似describe is not defined之类找不到Jest中全局变量的错误提示。导致这个问题的原因是,我们没有在eslint中启用Jest的环境配置。解决这个问题非常简单,只需要把jest加入到env配置选项中即可。

  1. module.exports = {
  2. ...,
  3. env: {
  4. jest: true
  5. }
  6. }

通用

import/extensions 报错

当我们使用eslint的时候,我们可能到遇到类似ESLint: Missing file extension for "..."; (import/extensions)的错误。这是因为在通常的情况下,我们引入文件的时候,要用完整的文件名。但在node环境下,我们引用文件的时候,对于.js的扩展名是会省略的。在这个时候,如果我们要请eslint不报这个错误。那么我们就可以通过安装eslint-plugin-import和修改settings配置。

安装依赖

  1. npm i -D eslint-plugin-import
  2. npm i -D eslint-import-resolver-typescript // 添加对typescript的支持

修改配置文件

  1. module.exports = {
  2. ...,
  3. plugins: [...,'import'],
  4. settings: {
  5. "import/resolver": {
  6. node: {
  7. extensions: [".js", ".jsx", ".ts", ".tsx"]
  8. }
  9. }
  10. }
  11. }

import/no-unresolved报错

当我们使用typescript配置eslint开发的时候,我们可能会遇到ESLint: Unable to resolve path to module './func'. (import/no-unresolved)的错误。如果我们要解决这个问题,那么我们就要通过安装插件和修改配置的方式来进行。

安装依赖

  1. npm i -D eslint-plugin-import
  2. npm i -D eslint-import-resolver-typescript

修改配置文件

  1. module.exports = {
  2. ...,
  3. plugins: [...,'import'],
  4. rules: {
  5. ...,
  6. "import/extensions: [
  7. "error",
  8. "ignorePackage",
  9. {
  10. js: "never",
  11. ts: "never",
  12. jsx: "never",
  13. tsx: "never",
  14. }
  15. ]
  16. },
  17. settings: {
  18. "import/resolver": {
  19. node: {
  20. extensions: [".js", ".jsx", ".ts", ".tsx"]
  21. }
  22. }
  23. }
  24. }