+
95
-

回答

Google 的 zx.js 可以实现,zx 是一个更方便、更友好地帮助开发者写脚本的工具。github地址 点击打开链接

安装zx.js

npm install zx

使用zx.js

Google 的 zx.js 提供了封装子进程的创建以及从这些进程处理 stdout 和 stderr 的函数。下面将使用的主要函数是 $ 函数,使用 zx.js 规定脚本写入扩展名为 .mjs 的文件中,以便能够在顶层使用 await。如果习惯于 .js 扩展名,请将脚本包装在类似 void async function () {...}() 中。

下面先来使用扩展名 .mjs,每个 .mjs 文件都将以下代码作为开头:

#! /usr/bin/env node

下面就来实现一个 shell 脚本中 ls 的功能,创建文件 ls.mjs ,完整代码如下:

#! /usr/bin/env node
import { $ } from "zx";
$.verbose = false;
const output = (await $`ls`).stdout.trim();
console.log(output);


和 shell 脚本文件一样,需要将其转为可执行文件:

chmod +x ./ls.mjs

下面就来执行这个 Node.js 编写的 shell 脚本,执行:

./ls.mjs


另外一个例子

创建一个vue项目的脚本createVueApp.mjs

#!/usr/bin/env zx
await $`vue create vue-demo`
await $`cd vue-demo`
await $`npm run dev`

话可以通过 zx 工具运行文件,执行脚本

zx createVueApp.mjs

除了 zx.js 提供的实用功能外,它还提供了几个流行的脚本库,例如:

chalk:允许为脚本的输出添加颜色。

minimist:解析命令行参数的库,将它们暴露在 argv 对象下。

fetch:可以使用它来发出 HTTP 请求。

fs-extra:公开了 Node.js 核心 fs 模块,以及许多其他方法,可以更轻松地使用文件系统。

网友回复

我知道答案,我要回答