简介
gluegun 是一个轻量化、可扩展、易用的命令行工具框架,它拥有丰富的插件生态系统,可以让你以极简的方式创建多功能的 CLI 工具。此外,它还具有自定义命令行选项、参数解析、构建工具等功能,而且使用 TypeScript 编写,使得它的代码更加健壮、稳健。
安装
在使用 gluegun 之前,你需要先进行安装,可以使用 npm 进行安装。
npm install -g gluegun
安装完成后,你可以通过以下命令来检查是否已经安装成功。
gluegun --version
如果输出版本号,则代表已经安装成功。
创建一个 CLI 工具
在使用 gluegun 创建一个 CLI 工具前,需要一个开发者环境。以下是简单的环境搭建过程:
- 安装 Node.js 10 或者更高版本。
- 使用命令行工具创建一个新的目录,例如
mycli
并进入该目录。 - 执行
npm init
初始化项目,生成package.json
文件。 - 安装 gluegun 并将其添加为项目依赖。
你可以使用以下命令来安装 gluegun 并添加项目依赖。
npm install gluegun --save
安装完成之后,可以通过以下命令创建一个 CLI 工具。
npx gluegun create mycli
开始编写 CLI
创建项目并安装所需的 npm 包后,我们进入到 mycli
目录下开始编写 CLI 工具。
gluegun 支持多种方式创建 CLI 工具,不过我们将基于 “创建可执行的 CLI 文件” 方式来创建 CLI 工具。
在
mycli/bin
目录下,创建一个入口文件,例如mycli.ts
。引入 gluegun 库,并初始化上下文变量。
-- -------------------- ---- ------- -- -------- ------ - ----- - ---- --------- ----- -------- --------- - ----- --- - ------- --------------- --------------- -------------------------- - --------- ---------- ------- ---- -- --------- ----- ------- - ----- ------------- ------ ------- - -------------- - - --- -
上面的代码中,我们使用了
build()
方法来创建 CLI,brand()
方法设置了你的 CLI 的名称,src()
方法设置了 CLI 的工作目录,plugins()
方法设置自定义插件。接下来,我们创建一个 CLI 命令,例如
mycli.ts hello
。定义命令的方法如下:module.exports = { name: 'hello', run: async (toolbox) => { const { print } = toolbox print.info('Hello World!') }, }
上面的代码中,我们定义了名为
hello
的 CLI 命令,并定义了命令的执行方法。当你执行mycli hello
时,只需执行这个文件即可。执行命令:
node myclie.ts hello
输出:
$ node .\mycli.ts hello Hello World!
至此,一个简单的 mycli 工具就创建完成了。
示例代码
下面是完整的示例代码。
-- -------------------- ---- ------- ------ - ----- - ---- --------- ----- -------- --------- - ----- --- - ------- --------------- --------------- -------------------------- - --------- ---------- ------- ---- -- --------- ----- ------- - ----- ------------- ------ ------- - -------------- - - --- - -------------- - - ----- -------- ---- ----- --------- -- - ----- - ----- - - ------- ----------------- -------- -- -
结语
通过本文,您已经了解了如何使用 gluegun 快速创建 CLI 工具,并在其中定义自己的命令。gluegun 的应用场景非常广泛,它既可以用在命令行工具的开发中,也可以用于脚本开发。在你的项目中引入 gluegun 可以为你的开发带来不一样的体验,同时也增强了开发体验。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5f28e8fb3b0ab45f74a8ba73