Eslint 与 Prettier。无法防止 eslint-config-prettier 行长度错误

fre*_*gee 9 javascript eslint prettier

请参阅底部的编辑

我有一个 JavaScript 文件,正在使用 Eslint 进行检查。我正在使用 Prettier 来格式化代码。

我个人对此文件的选择是将行长度增加到 Prettier 默认的 80 个字符以上,即 2000 个字符。

所以我有一个 prettierrc.config.js:

module.exports = {
  printWidth: 2000
};
Run Code Online (Sandbox Code Playgroud)

当我格式化代码并且我有一个 .eslintrc.js 时,它会起作用

module.exports = {
  "parserOptions": {
    "ecmaVersion": 6
  },
  "env": {
    "es6": true,
    "browser": true
  },
  "extends": [
    "eslint-config-airbnb-base",
    "eslint-config-prettier"
  ],
  "plugins": [
    "eslint-plugin-import",
    "eslint-plugin-prettier"
  ],
  "rules": {
    "prettier/prettier": ["error", {}],
    "max-len": ["error", {"code": 2000, "ignoreUrls": true}],
    "linebreak-style": 0,
    "no-use-before-define": ["error", { "functions": false, "classes": false }],
    "no-plusplus": ["error", { "allowForLoopAfterthoughts": true }],
    "no-underscore-dangle": 0,
    "import/no-amd": 0,
    "import/no-dynamic-require": 0,
  },
  "globals": {
    "define": true
  }
};
Run Code Online (Sandbox Code Playgroud)

每次我检查文件时,它都会抱怨某些行的长度。

为了清楚起见编辑:

我正在使用eslint v4.19.1prettier 1.10.2。配置文件正在被正确读取和使用。

编辑以获取更多信息 2018/05/30

我发现了 lint 错误的区别。Max-len 工作正常,并且我在规则中作为覆盖提供的值受到尊重。

更漂亮的配置有一个问题是我的一些条件表达式的长度。我可以看到它想将它们放在带有额外空白的新行上。这是我现在想要覆盖的配置。这似乎是一个与 max-len 不同的规则。下面的示例是一个长度为 60 个字符的条件表达式,它触发了 lint 错误。整行只有 84 个字符长(* 代表空格)。

**********} else if (firstSessionDate > this.sessionsData[i].SessionStartDateTime) {
Run Code Online (Sandbox Code Playgroud)

Luc*_*cas 1

根据ESLint 的文档,您包含的任何内容都rules优先于从 继承的规则extends,这意味着您可以部分或完全更改规则的行为。

这意味着max-len您指定的规则将优先于max-len来自 的规则eslint-config-prettier。您必须从配置文件中删除此规则,ESLint 将停止抱怨。

  • 嗨@Lucas,谢谢你回到我身边。我在这方面花了更多的时间。max-len 的包含是有意为之的。这迫使 eslint 尊重我增加的行长度。这是有效的,因为我已经测试并修改了这些值。如果我注释掉 max-len,我会收到有关行长度的错误。prettier/eslint 实际上抱怨的是我的一些 if/else 语句中条件表达式的长度。它想让他们走上新的路线。我花了一段时间才看出其中的区别。我仍在寻找一种方法来克服这个问题。 (2认同)