如何用Jest使用ESLint
我试图用Jesttesting框架来使用ESLint linter。
Jesttesting运行着一些像jest
这样的全局variables,我需要告诉它的内容。 但棘手的是目录结构,Jest的testing是embedded在__tests__
文件夹中的源代码,所以目录结构看起来像这样:
src foo foo.js __tests__ fooTest.js bar bar.js __tests__ barTest.js
通常情况下,我将所有的testing都放在一个目录下,我可以在其中添加一个.eslintrc
文件来添加全局variables…但是我当然不希望将.eslintrc
文件添加到每个__test__
目录中。
现在,我刚刚把testing全局variables添加到全局的.eslintrc
文件中,但是因为这意味着我现在可以在非testing代码中引用jest
,这似乎不是“正确的”解决scheme。
有没有办法让eslint基于某些模式来应用基于目录名称或类似的规则?
您现在可以添加:
"env": { "jest": true }
到您的.eslintrc
将添加所有与玩笑有关的东西到你的环境中,消除了linter错误/警告。
希望有所帮助!
计划基于模式的configuration2.0.0版本的ESLint。 但是,现在,您将不得不创build两个单独的任务(如注释中所述)。 一个用于testing,另一个用于其他代码并运行它们,同时提供不同的.eslintrc文件。
PS在下一个ESLint版本中会有一个笑话环境,它将注册所有必需的全局variables。
仅为__tests__
文件夹添加环境
您可以在您的__tests__
文件夹中添加一个.eslintrc.yml
文件,这扩展了您的基本configuration:
extends: <relative_path to .eslintrc> env: jest: true
如果你只有一个__tests__
文件夹,这个解决scheme是最好的,因为它只在需要的地方开玩笑的环境。
处理很多testing文件夹
如果你有更多的testing文件夹(OP的情况下),我仍然build议添加这些文件。 如果你有很多这些文件夹可以添加一个简单的zsh脚本:
#!/usr/bin/env zsh for folder in **/__tests__/ ;do count=$(($(tr -cd '/' <<< $folder | wc -c))) echo $folder : $count cat <<EOF > $folder.eslintrc.yml extends: $(printf '../%.0s' {1..$count}).eslintrc env: jest: true EOF done
这个脚本将查找__tests__
文件夹,并添加一个.eslintrc.yml
文件,configuration如上所示。 该脚本必须在包含您的父级.eslintrc
的文件夹中.eslintrc
。
在.eslintignore文件中添加以下值:
**/__tests__/
这应该忽略__tests__目录及其子目录的所有实例。