Deno 是一个运行时环境,用于在浏览器之外运行 JavaScript 和 TypeScript。它提供了一些内置的 API,例如文件系统、网络请求和进程管理等功能。但是有时候我们需要在 Deno 中调用一些外部的命令行工具,例如 Git 或者其他 Shell 命令。本文将会介绍如何在 Deno 中调用 CLI 命令,并给出一些示例代码。
Deno 的子进程 API
Deno 提供了一个子进程管理 API,可以用来在 Deno 中运行其他的命令行工具。这个 API 有两个函数,分别是 Deno.run()
和 Deno.runSync()
。
Deno.run()
Deno.run()
函数可以异步地启动一个子进程并运行一个命令行工具。它接受一个对象作为参数,这个对象包含了要运行的命令行工具的相关信息。
-- -------------------- ---- ------- --------- ---------- - ---- --------- ----- ------- ----- - ----- -------- ------- -- -------- --------- - ------- - ------ - ------- -------- --------- - ------- - ------ - ------- -
其中,cmd
属性是一个字符串数组,表示要运行的命令行工具和其参数。例如,如果要运行 Git 命令,可以这样写:
const process = Deno.run({ cmd: ["git", "status"], });
这个代码会启动一个子进程,运行 git status
命令。
cwd
属性是一个字符串,表示子进程的工作目录。如果不指定,子进程将会在当前目录下运行。
env
属性是一个对象,表示子进程的环境变量。如果不指定,子进程将会继承当前进程的环境变量。
stdout
和 stderr
属性分别表示标准输出和标准错误输出的处理方式。它们可以是以下几种值:
"inherit"
:将输出重定向到父进程的标准输出或标准错误输出。"piped"
:将输出读取到一个管道中,可以通过process.stdout
和process.stderr
属性获取。"null"
:将输出丢弃。- 一个数字:将输出重定向到一个文件描述符。
Deno.runSync()
Deno.runSync()
函数与 Deno.run()
函数类似,不同之处在于它是同步地启动一个子进程并运行一个命令行工具。它接受的参数和返回值与 Deno.run()
函数相同。
const process = Deno.runSync({ cmd: ["git", "status"], });
示例代码
下面是一个示例代码,它调用了 Git 命令,并将输出打印到控制台上。
-- -------------------- ---- ------- ----- ------- - ---------- ---- ------- ---------- ------- -------- ------- -------- --- ----- -------- ------ - ----- ------------- ----------------- ----------------------- --- -- ------- - ----------------- ----------------------------- - --------------- -------------------------- -------------------
这个代码启动了一个子进程,运行 git status
命令,并将标准输出和标准错误输出读取到管道中。然后,它等待子进程结束,并获取子进程的退出状态和标准错误输出。如果存在标准错误输出,它将会打印到控制台上。最后,它将标准输出打印到控制台上。
总结
本文介绍了如何在 Deno 中调用 CLI 命令,包括使用 Deno.run()
和 Deno.runSync()
函数。这些函数可以让我们在 Deno 中运行其他的命令行工具,并获取它们的输出。通过这些 API,我们可以更加灵活地使用 Deno 来完成各种任务。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65e1a8241886fbafa4e9c392