【问题标题】:What is the difference between `extends` and `rulesDirectory` in TSLintTSLint 中的 `extends` 和 `rulesDirectory` 有什么区别
【发布时间】:2018-07-08 22:40:59
【问题描述】:

TSLint.json 配置文件 (https://github.com/palantir/tslint) 支持 extendsrulesDirectory 数组,就像这样

{
  "extends": [
    "tslint-microsoft-contrib",
    "tslint-config-security"
  ],
  "rulesDirectory": [
    "node_modules/tslint-eslint-rules/dist/rules",
    "node_modules/tslint-microsoft-contrib",
    "node_modules/tslint-config-security"
  ]
}

对于不熟悉该工具的新用户,文档似乎略微开放。

如果有人能澄清 extendsrulesDirectory 在 VS Code 编辑器中的使用以及 tslinting 的一般行为,我将不胜感激。

  1. extendsonly 是否提供默认配置(如果包提供)?

  2. 因此这与rulesDirectory 不同吗?

    • rulesDirectory 是否只为您提供专门选择加入的规则(如果在根 tslint.json 中指定规则,则需要)?

    • 我是否仍应在extends rulesDirectory 中指定tslint 包?

  3. 假设 extends 提供来自另一个 tslint 配置文件的默认值,我能否指定 rulesDirectory 并添加规则来覆盖特定标志?

担心,因为只有部分规则显示在 IntelliSense 自动完成中,而我希望能更清楚地了解一些行为。

【问题讨论】:

  • ^V 请评论为什么您投了反对票,以便我可以根据您的喜好改进问题。
  • extends 配置选项扩展了指定包中的tslint.json 配置并且使指定包中的规则可用。包的tslint.json 是否将其任何规则设为默认是包作者的决定。我有几个 TSLint 包,它们提供没有启用规则的默认配置,因此使用 extend 只是使包的规则以比指定包规则目录的路径更简洁的方式可用。
  • 感谢@cartant 的全面回答!所以我可以安全地删除rulesDirectory?另外,在添加包时,您的 IDE 自动完成功能是否适用于包的规则?我在TSLinting RxJS 上看到了你的作品。我希望我早些时候在学习时尝试整理不同的RxJS 版本时注意到了这一点! 我很乐意接受你对这个问题的回答
  • 没有。我使用 VS Code 和 AFAICT,它只自动完成内置规则。这不是我研究过的东西,也不是我曾经依赖过的东西。我的包中的规则包括所需的元数据 - 它在规则的代码中 - 但自动完成背后的内容以及它是否需要元数据之外的其他内容,我不知道。
  • 好的。感谢你的协助。对此,我真的非常感激。我现在只坚持指定规则????。

标签: typescript eslint lint tslint


【解决方案1】:

TSLint中extendsrulesDirectory有什么区别

它们非常不同。

  • extends 允许您应用现有的 tslint 配置,然后扩展它
  • rulesDirectory 只允许您为自定义规则添加目录。

【讨论】:

  • 我根本不明白差异......你写它们非常不同,但正如你所描述的,在这两种情况下,它们只是从包中添加自定义规则。一旦这些自定义规则来自配置文件,反之,它们来自目录。所以我想说,它们几乎相同,但是它们的添加方式有点不同(配置文件与目录)。
【解决方案2】:

?答案取自tslint configuration docs as of 6 April 2018:

  • extends?: string | string[]:内置配置预设的名称(请参阅下面的内置预设),或者路径或路径数组 由该配置扩展的其他配置文件。 该值使用节点模块解析语义处理。为了 例如,"tslint-config" 的值会告诉 TSLint 尝试并 加载名为“tslint-config”的模块的主文件作为 配置文件。节点模块内的特定文件也可以是 指定,例如。 "tslint-config/path/to/submodule"。相对路径 还支持 JSON 文件或 JS 模块,例如"./tslint-config"
  • rulesDirectory?: string | string[]:[自定义规则][2] 的目录路径或目录路径数组。这些值是 使用节点模块解析语义处理,如果 index.js 是 放置在您的规则目录中。我们回退到使用相对或 绝对路径,如果模块无法解析。如果你想避免 模块解析可以直接使用相对或绝对路径 (例如./)。

在此 rules 块中指定的任何规则都将覆盖在任何正在扩展的基本配置中配置的规则。

【讨论】:

    【解决方案3】:

    看看docs

    似乎主要区别是:

    • "extends" 使用内置规则集

    • "rulesDirectory" 使用 custom(您自己的,不是内置的)规则

    【讨论】:

      猜你喜欢
      • 2017-09-22
      • 2021-01-10
      • 1970-01-01
      • 2011-02-15
      • 2016-04-06
      • 2012-11-24
      • 1970-01-01
      • 2012-03-18
      • 2021-01-14
      相关资源
      最近更新 更多