[Перевод] Релиз Bun Shell
JavaScript — самый популярный скриптовый язык в мире.
Так почему же так сложно запускать shell-скрипты на JavaScript?
import { spawnSync } from "child_process";
// this is a lot more work than it could be
const { status, stdout, stderr } = spawnSync("ls", ["-l", "*.js"], {
encoding: "utf8",
});
Также можно использовать Node.js API, чтобы сделать что-то подобное:
import { readdir } from "fs/promises";
(await readdir(".", { withFileTypes: true })).filter((a) =>
a.name.endsWith(".js")
);
Но это все еще не так просто, как shell:
ls *.js
Почему существующие shell-оболочки не работают в JavaScript
bash
или sh
существуют уже несколько десятилетий.
Shell — это решенная проблема!
Комментатор Hacker New, возможно.
Но они плохо работают в JavaScript. Почему?
macOS (zsh), Linux (bash) и Windows (cmd) имеют немного разные оболочки с разным синтаксисом и разными командами. Команды, доступные на каждой платформе, разные, и даже одна и та же команда может иметь разные флаги и поведение.
На сегодняшний день решение npm заключается в том, чтобы положиться на сообщество, которое дополнит недостающие команды реализациями JavaScript.
rm -rf не работает в Windows
rimraf
— кроссплатформенная реализация JavaScript rm -rf
— загружается более 60 миллионов раз в неделю:
Переменные среды, например, FOO=bar
-->