如何基于每个目录设置JSHint选项

Ica*_*rus 5 jshint

我看到在这里添加了基于每个目录指定JSHint选项的功能.

但是,我不清楚你是如何实际利用这一点的.如何在单个目录中设置JSH选项,以便选项与其他目录不同?

Jam*_*ice 5

似乎有问题的更改实际上允许您在每个文件的基础上指定覆盖选项.您可以overrides向配置添加属性,其值应为对象.此对象的键被视为正则表达式,对其测试文件名.如果要分析的文件的名称与overrides正则表达式匹配,则为该覆盖指定的选项将应用于该文件:

cli.js您链接到的提交中的测试文件diff中有一个这样的示例:

{
    "asi": true,
    "overrides": {
        "bar.js$": {
           "asi": false
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在该示例中,存在单个覆盖,其将应用于与bar.js$正则表达式匹配的任何文件(看起来有点疏忽,因为.它将匹配任何字符并且可能仅旨在匹配文字.字符).


说了这么多,看起来overrides房产不会对你有所帮助.我认为你真正想要的是.jshintrc目录中的新文件.JSHint从正在分析的文件的目录中查找该文件,然后向上移动目录树,直到找到它为止.无论它首先找到的是使用它的那个.来自文档:

如果是.jshintrc,JSHint将开始在与正在被linted的文件相同的目录中查找此文件.如果未找到,它将在目录树中向上移动一级到文件系统根目录.

一个常见的用例是为应用程序代码和测试代码提供单独的JSHint配置.这允许您分别定义不同的环境和全局变量.

  • 是的,我一直使用这种设置.我编辑了我的答案,也包括文档的相关部分.要记住的一件事是,因为JSHint开始在linted files目录中查找`.jshintrc`文件并向上运行,所以无法从更高目录中的configs合并选项. (2认同)