0%

使用 TypeScript 开发 Node.js CLI

前言

本文简单介绍如何使用 TypeScript 搭建 Node.js CLI 开发框架。

开发环境

创建项目

通过 npm init 命令创建一个新的名为 hello 的 Node.js 项目,这将在 hello 根目录下创建一个 package.json 配置文件:

1
2
3
mkdir hello
cd hello
npm init -y // 使用 `-y` 选项保持默认参数

为支持 ES 模块,在 package.json 中增加 type 属性并传入 module

1
2
3
{
+ "type": "module",
}

为了运行 CLI,在 package.json 中增加 bin 属性并传入入口文件:

1
2
3
{
+ "bin": "src/index.ts",
}

然后,需要安装 TypeScript、@types/node 以及 ts-node:

1
npm install -D typescript @types/node ts-node

此时,package.json 中的内容如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"name": "hello",
"version": "1.0.0",
"description": "",
"main": "index.js",
"type": "module",
"bin": "src/index.ts",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@types/node": "^20.8.0",
"ts-node": "^10.9.1",
"typescript": "^5.2.2"
}
}

为了让项目使用 TypeScript 编译器编译,使用 npx tsc --init 命令创建一个 tsconfig.json 配置文件并配置默认的编译选项:

1
npx tsc --init

如下所示修改 tsconfig.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"compilerOptions": {
"strict": true,
"target": "ES2022",
"module": "ES2022",
"sourceMap": false,
"esModuleInterop": true,
"moduleResolution": "Node",
},
"include": ["src/**/*.ts"],
"ts-node": {
"esm": true,
}
}

创建入口文件

创建 package.jsonbin 属性配置的 TypeScript 入口文件 src/index.ts,在文件的第一行添加以下 shebang

1
#! /usr/bin/env npx ts-node

接下来为 src/index.ts 添加执行权限:

1
chmod u+x ./src/index.ts

然后在文件中添加一条输出:

1
console.log('Hello CLI');

文件完整内容如下:

1
2
3
#! /usr/bin/env npx ts-node

console.log('Hello CLI');

现在这个文件就可以执行了:

1
./src/index.ts

输出如下:

1
Hello CLI

execute out log

全局命令

现在可以使用以下命令在本地全局安装 npm 包:

1
npm link

安装完成后,可以使用 package.json 中的项目名称执行:

1
hello

global execute out log

使用以下命令可以取消全局命令:

1
npm unlink -g hello

至此 Node.js CLI 框架搭建完成,可以编写业务逻辑代码了。

使用 Node.js 开发的 CLI

欢迎关注我的其它发布渠道