Отладка Sanity exe c с помощью VS Code - PullRequest
1 голос
/ 07 мая 2020

Я использую Sanity (sanity.io headless CMS) и выполняю некоторую миграцию данных с помощью интерфейса командной строки.

Можно ли каким-то образом подключить отладчик vscode и остановиться на точках останова в сценариях миграции. Я запускаю следующий скрипт миграции cli: sanity exec migrate.js --with-user-token. Я хотел бы остановиться на точках останова при миграции. js?

Мне удалось отладить консольные приложения, запускаемые с помощью узла, но я не знаю, можно ли заставить отладчик задействоваться при запуске сценария с помощью sanity exec ... Пошаговое изучение кода - отличный способ находить ошибки и учиться.

Ответы [ 2 ]

2 голосов
/ 07 мая 2020

Есть несколько разных способов отладки Sanity CLI. Однако я раньше не пробовал ваш подход.

Если вы готовы, вы можете клонировать репозиторий ОС . Это, вероятно, облегчило бы вам задачу. Если вы используете 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 файл.

EDIT: Если вы хотите запускать команды, требующие контекста Studio, вы можете запустить сценарий symlinkDependencies.js. Примером этого может быть следующее:

node symlinkDependencies.js "/<path>/<to>/<your>/<studio>/<folder>" --all

Это создаст символические ссылки между вашим экземпляром Studio и Sanity monorepo. Вам также нужно будет запустить npm run watch в монорепозитории. Таким образом, вы можете редактировать код в монорепозитории, и запускаемые вами команды будут содержать ваши изменения.


Еще одна вещь, которую вы можете попробовать, - это добавить переменную окружения DEBUG=*. Это выведет отладочную информацию при запуске команды CLI. Если вы используете Ma c, вы можете просто запустить 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"
    ]
}

или что-то в этом роде. Сам я такой подход не пробовал.

1 голос
/ 08 июня 2020

Мне в конечном итоге не удалось отладить команду sanity exec, но после переделки скрипта я получил почти то же самое, что и при обычной отладке узла. *.

Сделал токены доступа к проектам, в которые я хотел записывать или читать черновики. Добавил соответствующую конфигурацию запуска и, Запускал обычный отладчик узла v14.2.0 из vscode и пройдемся по моему скрипту с точками останова.
...