如何让 Jest --watch 在 JSON/YAML 文件的更改上运行?

dcs*_*san 5 testing yaml node.js jestjs

我正在运行一些--watch依赖于数据固定装置的笑话测试。我希望在编辑数据文件时触发手表运行,而不仅仅是代码。我已将以下内容添加到我的package.json专门添加yamlmoduleFileExtensions,但仍然没有任何运气。基于: https: //jestjs.io/docs/en/configuration#modulefileextensions-arraystring

我是否可以进行设置来查看package.json它是否被拾取?我想下一步是尝试使用.js配置,抛出一些错误,看看我是否找错了树!

yaml 文件不是“导入”的一部分,否则它们只是由我的代码加载。所以我希望有一种方法可以“触摸”文件来重新触发手表运行。

也许 watch 命令还需要指定要监视哪些数据文件?

  "jest": {
    "verbose": true,
    "modulePaths": [
      "cdn",
      "src"
    ],
    "moduleFileExtensions": [
      "js",
      "json",
      "jsx",
      "ts",
      "tsx",
      "yaml"
    ]
Run Code Online (Sandbox Code Playgroud)

Rya*_*yan 3

根据此问题, moduleFileExtensions是配置要观看的其他文件扩展名的正确位置。然而,modulePaths您应该使用roots配置您想要观看的目录。

开玩笑的定义modulePaths

modulePaths 是设置 NODE_PATH 环境变量的替代 API,它是解析模块时要搜索的其他位置的绝对路径数组。

模块在执行测试之前就已解决,预计不会有太大变化。如果您想添加 Jest 观看的目录,那么您可以考虑使用rootsconfig

开玩笑的定义roots

Jest 用于搜索文件的目录路径列表。

package.json

{
  ...
  "jest": {
    "roots": [
      "<rootDir>/cdn",
      "<rootDir>/src"
    ],
    "moduleFileExtensions": [
      "js",
      "json",
      "jsx",
      "ts",
      "tsx",
      "node",
      "yaml",
      "yml"
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意,我还在 moduleFileExtensions 中添加了“yml”,以防您使用 yml/yaml。