首页 > 编程语言 >使用 Node.js 构建基于 Typescript 的命令行界面 (CLI)

使用 Node.js 构建基于 Typescript 的命令行界面 (CLI)

时间:2022-09-05 01:44:31浏览次数:126  
标签:Node npm Typescript CLI ts 导入 使用

使用 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,npm,Typescript,CLI,ts,导入,使用
From: https://www.cnblogs.com/amboke/p/16656708.html

相关文章

  • JS | getBoundingClientRect()方法的基本使用
    Element.getBoundingClientRect()方法返回一个DOMRect对象,其提供了元素的大小及其相对于视口的位置。返回的对象中有几个只读属性:width/x:元素矩形的宽度height/y......
  • Typescript类型体操 - Trim
    题目中文实现Trim<T>,它是一个字符串类型,并返回一个新字符串,其中两端的空白符都已被删除。例如typetrimed=Trim<'HelloWorld'>//expectedtobe'HelloWorld......
  • Typescript类型体操 - Trim Left
    题目中文实现TrimLeft<T>,它接收确定的字符串类型并返回一个新的字符串,其中新返回的字符串删除了原字符串开头的空白字符串。例如typetrimed=TrimLeft<'HelloWo......
  • Typescript类型体操 - Promise.all
    题目中文键入函数PromiseAll,它接受PromiseLike对象数组,返回值应为Promise<T>,其中T是解析的结果数组。constpromise1=Promise.resolve(3);constpromise2=42;cons......
  • Typescript类型体操 - Type Lookup
    题目中文有时,您可能希望根据某个属性在联合类型中查找类型。在此挑战中,我们想通过在联合类型Cat|Dog中搜索公共type字段来获取相应的类型。换句话说,在以下示例中,我们......
  • @FeignClient注解
    @FeignClient注解SpringCloudOpenFeign是SpringCloud团队将原生的Feign结合到SpringCloud中的产物。从上面原生Feign的使用示列来看,用的注解都是Feign中自带的,但......
  • Typescript类型体操 - Chainable Options
    题目中文在JavaScript中我们经常会使用可串联(Chainable/Pipeline)的函数构造一个对象,但在TypeScript中,你能合理的给它赋上类型吗?在这个挑战中,你可以使用任意你喜欢的......
  • @FeignClient 的使用
     ​ 添加依赖  <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>......
  • Typescript类型体操 - Tuple To Union
    题目中文实现泛型TupleToUnion<T>,它返回元组所有值的合集。例如typeArr=['1','2','3']typeTest=TupleToUnion<Arr>//expectedtobe'1'|'2'|'3'Eng......
  • 解决navicat连接mysql数据库报Client does not support..
    解决navicat连接mysql数据库报Clientdoesnotsupport...正在改BUG于2019-11-2521:05:35发布740收藏版权MySQL8.0的加密方式改变了,加密规则是caching_sha2_pas......