玩笑 --watch 由临时文件触发

jest --watch triggered by temp files

我在 MacOS Catalina 上 运行ning Jest 26.4.2,使用 Emacs 作为我的文本编辑器。当观察者 运行ning 时,任何时候 Emacs 创建临时文件 jest 都会触发 运行。这会导致许多 运行s 触发,往往会错过实际的文件保存事件。

我运行正在和npx jest --watch

开玩笑

我试过 various jest configs,看起来很有希望的 testPathIgnorePatterns,但没有用。

Emacs 通过使用模式 .#<target file name> 指向以 5 位数字结尾的文件的符号链接来创建临时文件。我试过忽略所有这些但没有帮助。

jest.config.js:

  watchPathIgnorePatterns: ['/[0-9]{5}/', '/#/'],
  testPathIgnorePatterns: ['/[0-9]{5}/', '/#/'],
  modulePathIgnorePatterns: ['/[0-9]{5}/', '/#/'],

您似乎忘记在最后添加点并删​​除斜杠(因为它是文件而不是文件夹)?所以 /#/ 应该是 /.#?我不是正则表达式大师,所以只创建了两个文件

  • .#test.test.js
  • test.test.js

而且我的 package.json 配置似乎正确忽略了第一个 (npm t -- --watch)。您也可以尝试使用 <rootDir>,或直接使用 npm t -- --config jest.config.js

传递配置文件
"jest": {
    "testPathIgnorePatterns": [
        "<rootDir>/.#",
        "/.#"
    ]
}

我的编辑器 Emacs / Spacemacs 创建的文件是 lock files。一旦文件被编辑、保存或还原,它们就会被创建和删除。

我无法让 jest 忽略它们,所以我将我的 Spacemacs TypeScript 层配置为不通过 (typescript :variables create-lockfiles nil).

在 TypeScript 模式下创建它们

看最近的一个笑话(2021 年 4 月 26.6.1),createHasteMap() 函数调用 saneignored composed from config.modulePathIgnorePatterns and config.watchPathIgnorePatterns (src). watchPathIgnorePatterns 似乎是合适的,但欢迎反驳我的建议.

jest.config.js

module.exports = {
  modulePathIgnorePatterns: [
    "\/\.#"
  ]
}

如果出于某种原因,您的目录层次结构中有 .../.#... 个您 不想 跳过的路径,您可以使用关键字 <rootDir>,它将被替换为指向项目的根目录。 (如果您还有一个名为 <rootDir> 的目录,请退出。)