有多种不同的方法可以调试 Sanity CLI。不过,我之前没有尝试过你的方法。
如果您愿意,可以克隆OS repository。这可能会让你的事情变得更容易。如果您使用的是 VS Code,那么您可以使用此启动配置来运行带有调试器的 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"
]
}
或类似的东西。我自己没有尝试过这种方法。