【问题标题】:eslint – how to know where a rule is "defined"eslint – 如何知道“定义”规则的位置
【发布时间】:2021-01-01 10:52:03
【问题描述】:

给定一个项目,它的节点 package.json 安装了 eslint 和一些插件,我怎么知道特定规则设置在哪里?

我看到正在应用一个规则 (space-before-function-paren),但我在项目的任何 .eslintrc 文件或插件文档中都找不到它。

此外,我正在使用带有一些扩展的 VSCode,例如 ESLint 本身,这可能会干扰这里,但我再次不确定如何/在哪里检查哪个部分正在应用该规则(尽管我认为这是不太可能发生,因为如果代码不符合上述规则,npm run lint 就会失败。

我正在发布 package.json 文件的相关部分:

{
  // ...
  "scripts": {
    "watch": "NODE_ENV=development node build/build.js --watch",
    "build": "NODE_ENV=development node build/build.js",
    "build:prod": "NODE_ENV=production node build/build.js",
    "unit": "NODE_ENV=test jest --config test/unit/jest.conf.js --coverage",
    "test": "npm run unit",
    "lint": "eslint --ext .js,.vue src test/unit/specs",
    "ci-lint": "eslint --ext .js,.vue src test/unit/specs --format checkstyle --output-file lint_out/unit_timeline.xml"
  },
  "devDependencies": {
    "@vue/test-utils": "^1.0.0-beta.27",
    "autoprefixer": "^8.2.0",
    "babel-core": "^6.26.0",
    "babel-eslint": "^8.2.2",
    "babel-jest": "^22.4.3",
    "babel-loader": "^7.1.4",
    "babel-plugin-dynamic-import-node": "^2.2.0",
    "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
    "babel-plugin-transform-runtime": "^6.23.0",
    "babel-preset-env": "^1.7.0",
    "babel-preset-stage-2": "^6.24.1",
    "chalk": "^2.3.2",
    "copy-webpack-plugin": "^4.5.1",
    "css-loader": "^0.28.11",
    "cssnano": "^3.10.0",
    "eslint": "^5.10.0",
    "eslint-config-standard": "^12.0.0",
    "eslint-friendly-formatter": "^4.0.1",
    "eslint-loader": "^2.1.1",
    "eslint-plugin-import": "^2.14.0",
    "eslint-plugin-node": "^8.0.0",
    "eslint-plugin-promise": "^4.0.1",
    "eslint-plugin-standard": "^4.0.0",
    "eslint-plugin-vue": "^5.0.0",
    "extract-text-webpack-plugin": "^3.0.2",
    "file-loader": "^1.1.11",
    "friendly-errors-webpack-plugin": "^1.6.1",
    "html-webpack-plugin": "^3.1.0",
    "jest": "^22.4.3",
    "jest-junit": "^3.6.0",
    "jest-serializer-vue": "^1.0.0",
    "node-notifier": "^5.2.1",
    "optimize-css-assets-webpack-plugin": "^3.2.0",
    "ora": "^2.0.0",
    "portfinder": "^1.0.13",
    "postcss-import": "^11.1.0",
    "postcss-loader": "^2.1.3",
    "postcss-url": "^7.3.1",
    "rimraf": "^2.6.2",
    "sass-loader": "^6.0.7",
    "semver": "^5.5.0",
    "shelljs": "^0.8.1",
    "uglifyjs-webpack-plugin": "^1.2.4",
    "url-loader": "^1.0.1",
    "vue-jest": "^2.3.0",
    "vue-loader": "^14.2.2",
    "vue-style-loader": "^4.1.0",
    "vue-template-compiler": "^2.5.21",
    "webpack": "^3.11.0",
    "webpack-bundle-analyzer": "^2.11.1",
    "webpack-file-list-plugin": "0.0.6",
    "webpack-merge": "^4.1.2",
    "yargs": "^11.0.0"
  }
  // ...
}

【问题讨论】:

  • 您确定您没有扩展具有该规则的配置吗?
  • 您是否引用了可以驻留在项目中的任何.eslintrc 文件?

标签: javascript vue.js eslint eslintrc


【解决方案1】:

不幸的是,似乎没有“eslint”方式来执行这样的报告。

如果你使用调试选项运行eslint,你会得到很多关于程序如何运行的信息:正在处理什么文件、使用什么配置、它是如何失败的等等,但不是从哪里来 em> 采取了规则。

我通过简单地在node_modules 目录中运行grep + find 并通过简单地更改它并在之后查看eslint 结果来确定哪个模块提供了规则来设法找到它。

【讨论】:

    猜你喜欢
    • 2022-01-13
    • 2019-11-10
    • 2020-01-29
    • 1970-01-01
    • 2019-12-21
    • 2021-12-19
    • 2017-06-19
    • 2021-06-18
    • 2016-02-03
    相关资源
    最近更新 更多