【问题标题】:jest --watch triggered by temp filesjest --watch 由临时文件触发
【发布时间】:2020-09-20 04:50:34
【问题描述】:

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

我在和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}/', '/#/'],

【问题讨论】:

    标签: javascript jestjs watchman


    【解决方案1】:

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

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

    并且看起来第一个被我的package.json 配置正确忽略(npm t -- --watch)。您也可以尝试使用<rootDir>,或者直接使用npm t -- --config jest.config.js 传递配置文件

    "jest": {
        "testPathIgnorePatterns": [
            "<rootDir>/.#",
            "/.#"
        ]
    }
    

    【讨论】:

    • 感谢@robi24,但这对我不起作用。我的文本编辑器正在创建的文件是“新的”,所以这可能与我似乎无法忽略它们有关。
    【解决方案2】:

    查看最近的一个笑话(2021 年 4 月 26.6.1),createHasteMap() 函数调用 sane 并使用由 config.modulePathIgnorePatternsconfig.watchPathIgnorePatterns (src) 组成的 ignoredwatchPathIgnorePatterns 似乎合适,但欢迎我提出反建议。

    jest.config.js

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

    如果出于某种原因,您的目录层次结构中有.../.#... 路径您不想 想要跳过,您可以使用关键字&lt;rootDir&gt; 创建一个更具体的模式,这将被替换为指向项目的根目录。 (如果您还有一个名为 &lt;rootDir&gt; 的目录,请不要乱搞。)

    【讨论】:

      【解决方案3】:

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

      我无法让jest 忽略它们,因此我将我的 Spacemacs TypeScript 层配置为不通过 (typescript :variables create-lockfiles nil) 在 TypeScript 模式下创建它们。

      【讨论】:

        猜你喜欢
        • 2022-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多