使用 VS 代码调试 Sanity exec
Debugging Sanity exec with VS Code
我正在使用 Sanity(sanity.io 无头 CMS)并使用 CLI 进行一些数据迁移。
我如何(或者是否完全可能)附加 vscode 调试器并在迁移脚本的断点处停止。我正在 运行 使用以下 cli 迁移脚本:sanity exec migrate.js --with-user-token
。我想在 migrate.js?
中的断点处停止
我已经使用 node 管理调试控制台应用程序 运行,但不知道在使用 sanity exec ..
启动脚本时是否可以让调试器参与。单步执行代码是发现错误和学习的好方法。
调试 Sanity CLI 有多种不同的方法。不过我以前没试过你的方法。
如果您愿意,可以克隆 OS repository。这可能会让你的事情变得更容易。如果您使用的是 VS 代码,那么您可以使用此启动配置 运行 附带调试器的 CLI:
{
"type": "node",
"request": "launch",
"name": "Launch CLI",
"program": "${workspaceFolder}/packages/@sanity/cli/bin/entry.js",
"args": [
"exec",
"migrate.js",
"--with-user-token"
]
}
您必须先 运行 npm run build
才能生成 entry.js
文件。
编辑: 如果您想 运行 命令需要 Studio 上下文,您可以 运行 symlinkDependencies.js
脚本。这方面的一个例子是:
node symlinkDependencies.js "/<path>/<to>/<your>/<studio>/<folder>" --all
这将在您的 Studio 实例和 Sanity monorepo 之间创建符号链接。您还必须在 monorepo 中 运行 npm run watch
。这样您就可以在 monorepo 中编辑代码,您 运行 的命令将包含您的更改。
您可以尝试的另一件事是添加环境变量 DEBUG=*
。这将在 运行 执行 CLI 命令时输出调试信息。如果你在 Mac,你可以简单地 运行 DEBUG=* sanity exec migrate.js --with-user-token
。如果您使用的是 Windows,请打开 PowerShell 并 运行 这个:$env:DEBUG=*
。这仅为该 PowerShell 会话设置了一个环境变量。然后你可以运行你的命令。
对于你的确切问题,我想你可以试试这个配置:
{
"type": "node",
"request": "launch",
"name": "Launch CLI",
"program": "/usr/local/lib/node_modules/@sanity/cli/bin/entry.js",
"args": [
"exec",
"migrate.js",
"--with-user-token"
]
}
或类似的东西。我自己还没有尝试过这种方法。
我最终未能成功调试 sanity exec
命令,但在修改脚本后,我通过正常的节点调试完成了大部分相同的工作。
- 我
import
编辑client from '@sanity/client'
。
- 为我希望写入或读取草稿的项目制作了访问令牌。
- 添加了适当的启动配置,
- 运行 来自 vscode 的节点 v14.2.0 普通调试器并使用断点逐步执行我的脚本。
我正在使用 Sanity(sanity.io 无头 CMS)并使用 CLI 进行一些数据迁移。
我如何(或者是否完全可能)附加 vscode 调试器并在迁移脚本的断点处停止。我正在 运行 使用以下 cli 迁移脚本:sanity exec migrate.js --with-user-token
。我想在 migrate.js?
我已经使用 node 管理调试控制台应用程序 运行,但不知道在使用 sanity exec ..
启动脚本时是否可以让调试器参与。单步执行代码是发现错误和学习的好方法。
调试 Sanity CLI 有多种不同的方法。不过我以前没试过你的方法。
如果您愿意,可以克隆 OS repository。这可能会让你的事情变得更容易。如果您使用的是 VS 代码,那么您可以使用此启动配置 运行 附带调试器的 CLI:
{
"type": "node",
"request": "launch",
"name": "Launch CLI",
"program": "${workspaceFolder}/packages/@sanity/cli/bin/entry.js",
"args": [
"exec",
"migrate.js",
"--with-user-token"
]
}
您必须先 运行 npm run build
才能生成 entry.js
文件。
编辑: 如果您想 运行 命令需要 Studio 上下文,您可以 运行 symlinkDependencies.js
脚本。这方面的一个例子是:
node symlinkDependencies.js "/<path>/<to>/<your>/<studio>/<folder>" --all
这将在您的 Studio 实例和 Sanity monorepo 之间创建符号链接。您还必须在 monorepo 中 运行 npm run watch
。这样您就可以在 monorepo 中编辑代码,您 运行 的命令将包含您的更改。
您可以尝试的另一件事是添加环境变量 DEBUG=*
。这将在 运行 执行 CLI 命令时输出调试信息。如果你在 Mac,你可以简单地 运行 DEBUG=* sanity exec migrate.js --with-user-token
。如果您使用的是 Windows,请打开 PowerShell 并 运行 这个:$env:DEBUG=*
。这仅为该 PowerShell 会话设置了一个环境变量。然后你可以运行你的命令。
对于你的确切问题,我想你可以试试这个配置:
{
"type": "node",
"request": "launch",
"name": "Launch CLI",
"program": "/usr/local/lib/node_modules/@sanity/cli/bin/entry.js",
"args": [
"exec",
"migrate.js",
"--with-user-token"
]
}
或类似的东西。我自己还没有尝试过这种方法。
我最终未能成功调试 sanity exec
命令,但在修改脚本后,我通过正常的节点调试完成了大部分相同的工作。
- 我
import
编辑client from '@sanity/client'
。 - 为我希望写入或读取草稿的项目制作了访问令牌。
- 添加了适当的启动配置,
- 运行 来自 vscode 的节点 v14.2.0 普通调试器并使用断点逐步执行我的脚本。