zxの使い方
概要
- javascriptをshell scriptとして使うことができるラッパー(ソフトウェア)
- 拡張子は
.mjs
,.ts
,.md
- markdownのコードブロックを直接実行することができる
インストール
$ sudo npm i -g zx
基本的な文法と機能
サブプロセスのstdoutを表示しない
$.verbose = false;
サブプロセスをspawnする
let count = parseInt(await $`ls -1 | wc -l`) // spawn
サブプロセスをmultiprocessでspawnする
// 並列実行する場合の例
await Promise.all([
$`sleep 3; echo 3`,
$`sleep 2; echo 2`,
$`sleep 1; echo 1`,
]);
http(s)のコンテンツの取得
let resp = await fetch('http://wttr.in') // httpを実行する場合
if (resp.ok) {
console.log(await resp.text())
}
stdinを対話で読み取る
let name = await question('What is your username? ')
let token = await question('Choose env variable: ', {
choices: Object.keys(process.env)
})
console.log(`${name},${token}`);
glob
let files = await glob(['*']) // globを利用する場合
console.log(`${files}`);
stdoutする文字に色を付ける
console.log(chalk.blue('Hello world!'));
fileが存在していたら
if (await fs.pathExists("/tmp/zx-test")){
console.log("/tmp/zx-test is exists");
}
ファイルの出力
const outputPath = `${os.tmpdir()}/sample`;
fs.writeFileSync(outputPath, "ああああああ");