首页 >web前端 >js教程 >如何使用Google ZX库中的节点编写shell脚本

如何使用Google ZX库中的节点编写shell脚本

Lisa Kudrow
Lisa Kudrow原创
2025-02-09 09:59:12941浏览

>本文探讨了Google的ZX库,这是一种在Node.js项目中简化外壳脚本的强大工具。 我们将构建一个命令行实用程序来引导新的Node.js项目,展示ZX的功能。

How to Write Shell Scripts in Node with Google's zx Library Google ZX的关键优势

  • 使用熟悉的JavaScript语法简化了node.js中的shell脚本。
  • 处理儿童过程的创建,Stdout和Stderr有效。
  • >
  • >提供有用的实用程序,例如$(用于命令执行),cd()>,question(),并访问流行的库(例如,chalkminimistfetchfs-extra
  • )。)。
  • 促进最佳实践:使用Ecmasipript模块和本地依赖性管理。
  • 打字稿的兼容性(带有次要配置调整)。
>

传统外壳脚本的挑战:

>

>传统的外壳脚本(bash,zsh)可能很麻烦。 管理儿童流程,逃避参数和处理Stdout/stderr增加了复杂性。 虽然Bash提供内置功能,但其语法对于复杂的逻辑或用户输入处理的直觉可能较低。 Node.js在提供核心模块和JavaScript的灵活性时需要手动子过程管理,从而使其变得不那么直接。

> Google的ZX:一个解决方案:

> ZX优雅地解决了这些问题。 它包装了儿童过程管理和精简I/O处理。

>先决条件:

    基本的JavaScript和Node.js知识。
  • >终端命令熟悉。
  • 完整的代码可在github上找到。

ZX的工作方式:

核心函数是。 例如:

此执行$并捕获输出。 ZX利用标记的模板文字进行干净的语法。 其他有用的功能包括用于更改目录的

和用于用户输入的
<code class="language-javascript">import { $ } from "zx";

await $`ls`;</code>
。 它还集成了流行的库,例如

(用于彩色输出)和ls>(用于命令行参数解析)。cd()> question()chalk> Hello World with Zx:minimist

>

创建一个项目:

>
    >安装ZX:
  1. mkdir zx-project && cd zx-project && npm init -y
  2. 创建
  3. npm install --save-dev zx
  4. hello.mjs
  5. 使其可执行:
<code class="language-javascript">#! /usr/bin/env node
import { $ } from "zx";
$.verbose = false; // Suppress command echoing
const output = (await $`ls`).stdout.trim(); // Trim extra newline
console.log(output);</code>
>
    >运行:
  1. chmod u x hello.mjs
  2. 带有打字稿的
  3. ./hello.mjs zx:

typeScript需要tsconfig.json(例如,"compilerOptions": {"target": "es2017", "module": "commonjs"})和包装await

<code class="language-javascript">import { $ } from "zx";

await $`ls`;</code>

构建一个项目bootstrapper:> >让我们创建一个自动化项目设置的工具(

):

bootstrap-tool.mjs导入必要的模块:

    >
  1. 错误处理功能:import { $, argv, cd, chalk, fs, question } from "zx"; import path from "path"; import which from "which";
  2. 检查必需的程序(function exitWithError(msg) { console.error(chalk.red(msg)); process.exit(1); }
  3. ):gitnode> npxhander async function checkRequiredProgramsExist(programs) { ... }参数:检查它是否存在并且是有效的目录,然后进入其中。
  4. >。
  5. 检查全局git设置(--directorycd())。
  6. >
  7. 初始化git:user.name git inituser.email
  8. >
  9. 生成await $(使用;),Module System(
  10. )的提示,然后更新package.jsonnpm init -y>提示并安装NPM软件包(带有验证)。commonjs> module生成配置文件(package.json,EditorConfig,Pretitier,Eslint)使用
  11. 生成基本readme.md。
  12. .gitignore提交对git的更改。npx gitignore npx mrm
  13. 这个全面的引导程序显着简化了项目初始化。 进一步的增强功能可能包括自动目录创建,开源项目功能(许可证,贡献者盟约)和GitHub存储库自动化。
  14. 常见问题(常见问题解答):
>

提供的常见问题解答部分已经全面且写得很好。 不需要更改。

以上是如何使用Google ZX库中的节点编写shell脚本的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn