在 VS Code 中为 Lerna 项目调试 Jest 测试

Debug Jest tests for Lerna project in VS Code

我想在 VS 代码中为使用 Lerna 的项目调试特定的 Jest 测试,因此有多个文件夹,每个文件夹都有自己的 node_modules 文件夹。在 this answer 的帮助下,我得到了以下 launch.json:

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Jest watch",
      "program": "${workspaceRoot}/my/specific/module/node_modules/jest/bin/jest.js",
      "args": ["--verbose", "-i", "--no-cache", "--watchAll"],
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen",
      "cwd": "${workspaceFolder}/my/specific/module"
    }
  ]
}

问题是我不得不在启动配置中放入模块的特定路径,所以每次我想调试其他东西时都必须更改它。

有更好的方法吗?也许使用在资源管理器中选择的文件夹?也许有一些方法可以通过右键单击测试文件来启动调试?

Lerna 允许您在根 node_modules 中拥有 npm 包,这些包会被提升到您的包中。也就是说,如果你在根 package.json 文件中将 jest 作为依赖项,你应该能够在每个包中进行 运行 测试。

我的 launch.json 配置如下。第一个配置 运行 是所有测试,第二个 运行 是当前在 VS Code 中打开的测试。

  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Jest All",
      "program": "${workspaceFolder}/node_modules/.bin/jest",
      "args": [
        "--runInBand", "--watchAll"
      ],
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen",
      "disableOptimisticBPs": true,
      "windows": {
        "program": "${workspaceFolder}/node_modules/jest/bin/jest",
      }
    },
    {
      "type": "node",
      "request": "launch",
      "name": "Jest Current File",
      "program": "${workspaceFolder}/node_modules/.bin/jest",
      "args": [
        "${relativeFile}","--watchAll"
      ],
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen",
      "disableOptimisticBPs": true,
      "windows": {
        "program": "${workspaceFolder}/node_modules/jest/bin/jest",
      }
    }
  ]

非常感谢 dlac 的想法,我现在有一个可用的启动配置:

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Jest watch",
      "program": "${workspaceFolder}/node_modules/.bin/jest",
      "args": ["--verbose", "-i", "--no-cache", "--watchAll"],
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen",
      "windows": {
        "program": "${workspaceFolder}/node_modules/jest/bin/jest"
      },
      "cwd": "${fileDirname}"
    }
  ]
}