zx (google/zx)
Searching Database…
Что это?
zx — это инструмент от Google, который позволяет писать скрипты для командной оболочки на JavaScript вместо Bash. Он оборачивает child_process из Node.js и добавляет экранирование аргументов и разумные значения по умолчанию.
Это библиотека, которую я импортирую, или самостоятельная CLI-утилита?
И то, и другое: zx — это пакет на JS/TS, который можно импортировать в свой код, а ещё он поставляется с CLI, который напрямую запускает .mjs-скрипты и даёт глобальный шаблонный тег $ для команд оболочки.
Как начать пользоваться?
Установите пакет zx и пишите скрипты, используя шаблонную строку с тегом $ для запуска команд оболочки; все варианты настройки описаны в zx/setup, а документация по использованию находится на google.github.io/zx.
Какая среда выполнения нужна для запуска скриптов zx?
Базовое требование — Node.js >= 12.17.0, но zx также работает на Bun >= 1.0.0, Deno 1.x/2.x или GraalVM Node.js и совместим с Bash или PowerShell.
Поддерживается только один формат модулей?
Нет, поддерживаются и CommonJS, и ESM; скрипты можно писать на обычном JavaScript или на TypeScript.
Работает ли это на Windows или только на Unix-подобных системах?
Работает на Linux, macOS и Windows: на Windows используется PowerShell, а на Unix-подобных системах — Bash.
Это официальный продукт Google?
Он распространяется по лицензии Apache-2.0, но прямо не является официально поддерживаемым продуктом Google, хотя и находится в организации google на GitHub.
Что такое MAML, о котором упоминается в README?
MAML — это родственный проект, также упомянутый в README zx: формат конфигурации, похожий на JSON, который добавляет комментарии, многострочные строки, ключи без кавычек и необязательные запятые.
Зачем использовать zx вместо обычных скриптов на Bash?
zx позволяет использовать полноценный язык программирования (JavaScript/TypeScript) с настоящими структурами данных и обработкой ошибок для сложных скриптов, при этом удобно запускать команды оболочки без рутинного кода для child_process в Node.js.
What are similar projects?
shelljs, terminalizer, inshellisense, navi, asdf, npm-check-updates, oh-my-posh, Inquirer.js
Which topics is it in?
deno, scripting, powershell, bun, bash, node, shell, command-line, npm, terminal, automation, tool