← Ко всем open source проектам

zx

google/zx

zx — инструмент Google для скриптов на JavaScript: системные команды, await и доступ к пакетам Node.js.

Форки 1,269
Автор google
Язык JavaScript
Лицензия Apache-2.0
Обновлено 2026-06-27

Что это такое

zx — инструмент Google для написания скриптов командной строки на JavaScript. Он дает удобный `$`-синтаксис, await и привычные возможности Node.js.

Проект появился вокруг боли bash-скриптов: они удобны для команд, но быстро становятся трудными для строк, JSON, ошибок и сложной логики.

Главная задача zx — оставить силу shell-команд, но писать управляющую логику на JavaScript.

Что внутри репозитория

Материалы zx кратко покрывают установку, использование, совместимость, дополнительные ссылки и лицензию.

Базовый пример zx начинается с `#!/usr/bin/env zx`: дальше идут команды через `$`, получение текущей ветки git и параллельные операции командной строки.

Как это обычно используют

zx используют для внутренних скриптов, релизных задач, автоматизации репозитория, генерации файлов и обвязки вокруг командной строки-инструментов.

Обычный сценарий: написать .mjs или executable script, вызвать shell-команды через `$`, обработать результат JavaScript-кодом и завершить процесс с ошибкой при сбое.

Shell-команда как await

Пример показывает главную идею zx: команды терминала можно писать внутри JavaScript и ждать их как promise.

Язык: JavaScript
#!/usr/bin/env zx

const branch = await $`git branch --show-current`;
await $`echo Current branch: ${branch}`;

Что получается на практике

Сильная сторона проекта — читаемость сложной автоматизации. Там, где bash начинает ломаться на кавычках и JSON, JavaScript часто проще.

Еще одно преимущество — доступ к npm-пакетам и стандартным API Node.js прямо в скрипте.

Ограничения и аккуратные места

Ограничение в том, что zx добавляет runtime-зависимость. На машине должен быть Node.js и установленный zx.

Также не стоит превращать каждый простой one-liner в большой JavaScript-скрипт; иногда обычный shell достаточно понятен.

Кому подойдет

zx лучше всего подходит командам, которые уже живут в JavaScript/Node.js и хотят писать автоматизацию на знакомом языке.

В каталоге zx важен как маленький, но выразительный инструмент: он показывает, как можно сделать скрипты ближе к обычному приложенческому коду.

Для надежности такие скрипты стоит держать в репозитории, документировать входные переменные и запускать в проверках, если они влияют на релизы или данные.

Смысл zx хорошо виден в репозиториях, где скрипты уже разрослись: один файл собирает артефакты, другой вызывает git, третий чистит папки и передает параметры между командами. На обычном shell это быстро становится хрупким. zx оставляет привычные системные команды, но дает JavaScript для условий, циклов, параллельных задач и обработки ошибок. Главное — не прятать сложную бизнес-логику в скриптах без тестов и описания входных параметров.

Хороший скрипт на zx все равно должен быть читаемым для человека, который придет позже. Имена задач, проверка входных переменных, понятный вывод и аккуратное завершение с ошибкой важны не меньше, чем короткая запись команд.