使用 Node.js 构建基于 Typescript 的命令行界面 (CLI)
2022/9/5 14:22:48
本文主要是介绍使用 Node.js 构建基于 Typescript 的命令行界面 (CLI),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
使用 Node.js 构建基于 Typescript 的命令行界面 (CLI)
我们的目标是使用 Typescript 创建一个基于 Node.js 的命令行界面 (CLI)。此设置包括顶级等待支持和 ES 模块导入。
我们要建造什么
对于本教程,我们将创建一个名为 在太空
.执行时,CLI 将输出空间中的当前人员。
入门
我们将从头开始创建 CLI,但您也可以从随附的代码中获取代码副本 存储库 .
为项目创建一个新目录。随便叫什么,我正在使用 在太空
:
mkdir 空间 cd 空间
通过创建一个新的 npm 包 包.json
文件:
npm 初始化 -y
要支持导入 ES 模块,请添加 类型
生成的属性 包.json
文件:
{ “类型”:“模块”, // 休息... }
要启用执行 CLI,请添加 垃圾桶
生成的属性 包.json
文件:
{ "bin": "src/index.ts", // 休息... }
创建一个 tsconfig.json
文件在同一文件夹中并包含以下内容以启用导入 ES 模块并包含顶级等待支持:
{ “编译器选项”:{ “目标”:“ES2022”, “模块”:“ES2022”, “esModuleInterop”:是的, “模块解析”:“节点” } }
创建入口点
创建 Typescript 入口点 src/index.ts
文件,以匹配 包.json
斌财产。包括以下 shebang 作为文件的第一行:
#!/usr/bin/env npx ts-node --esm
这 esm
包含标志以支持 ES 模块导入。确保文件包含执行权限。可以使用以下命令添加执行权限:
chmod u+x ./src/index.ts
将 Typescript 添加到文件中以帮助测试执行:
console.log("Typescript 执行成功");
该文件 (CLI) 现在可以像二进制文件一样直接执行。
./src/index.ts
使命令全局可用
现在可以使用以下命令在本地全局安装 npm 包:
npm 安装 -g
安装后,现在可以使用包名执行 npm 包:
在太空
包依赖
CLI 的基础现已建立。 CLI 的功能已准备好充实,是对 CLI 基础的补充。添加以下依赖项仅用于展示示例 CLI 功能。
- axios — 基于 Promise 的 HTTP 客户端
- chalk — 为输出着色
- clear — 清除终端屏幕
- figlet — 从文本创建 ASCII 艺术
使用以下命令安装依赖项:
npm install -S axios chalk clear figlet
示例 CLI 功能
将已安装包的导入添加到 Typescript 入口点 src/index.ts
文件。
从'axios'导入axios; 从“粉笔”导入粉笔; 从“清除”导入清除 从“figlet”导入 figlet
我们使用 Open Notify API 作为数据源。创建类型来处理 API 响应。
类型人= { 名称:字符串; 工艺:字符串; } 类型居民= { 号码:号码; 人:人[] }
添加一个函数来封装使用 Axios 与 Open Notify API 的交互。
使用清除终端屏幕 清除
,然后使用打印一个 ASCII 标头 无花果
.
使用 获取InhabitantsOfSpace
函数并使用打印结果 粉笔
.
这完成了我们的简单示例 CLI 功能。
将 CLI 发布到 NPM
如果使用以下命令登录到 npm,现在可以发布 npm 包:
npm 发布
现在可以使用以下命令全局安装 npm 包:
npm install -g 空间
安装后,现在可以使用包名执行 npm 包:
在太空
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明
本文链接:https://www.qanswer.top/14410/34540501
这篇关于使用 Node.js 构建基于 Typescript 的命令行界面 (CLI)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-03-30[OIDC in Action] 2. 基于OIDC(OpenID Connect)的SSO(纯JS客户端)
- 2024-03-29terraform jsonencode
- 2024-03-13vuex-persist
- 2024-03-11icons for vue
- 2024-03-07breadcrumbs react js
- 2024-03-06react login page example
- 2024-03-06react router uselocation
- 2024-03-04postgres jsonb_set
- 2024-03-01react native uuid
- 2024-02-29vuejs sidebar