Node.js TypeScript:如何自动化开发工作流程
摘要:在本教程中,你将学习如何在 Node.js 项目中使用 TypeScript 的自动化开发工作流程。
本教程假设你的系统上安装了 node.js
和 tsc
模块。
创建项目结构
首先,创建一个名为 nodets
的新目录。
然后,在 nodets
下创建两个子目录,分别称为 build
和 src
,如下所示:
你将把 TypeScript 代码存储在 src
目录中。
一旦 TypeScript 编译器编译源 TypeScript 文件,它会将输出文件存储在 build
目录中。
配置 TypeScript 编译器
从 macOS 和 Linux 上的终端或 Windows 上的命令提示符,在 nodets
目录中运行以下命令以创建 tsconfig.json
文件:
tsc --init
你将看到在 nodets
目录下创建的 tsconfig.json
:
tsconfig.json
文件表示该目录 (nodets
) 是 TypeScript 项目的根目录。
当编译 TypeScript 文件时,TypeScript 编译器将使用 tsconfig.json
中的配置来编译项目。
现在,你可以打开 tsconfig.json 文件。 里面有很多配置项。 在本教程中,将重点关注这两个选项:
rootdir
– 指定 TypeScript 输入文件的根目录。outdir
- 存储 JavaScript 输出文件。
这些配置项默认被注释掉了。 你需要取消注释(删除行开头的 //
)并按如下方式更改它们:
对于 outDir
选项:
"outDir": "./build"
对于 rooDir
配置项:
"rootDir": "./src"
要验证新配置,可以在 ./src
目录下创建一个名为 app.ts
的新文件,并增加以下代码:
console.log('Node.js TypeScript');
然后运行以下命令来执行 TypeScript 编译器。 它将编译 src
目录中存储的所有文件:
tsc
如果配置正确,你会在 ./build
目录下看到生成的 app.js
:
要运行 app.js
,请导航到 build
目录并执行以下命令:
node app.js
你将看到以下输出:
Node.js TypeScript
每次更改 TypeScript 代码时,都需要:
- 构建项目。
- 运行 JavaScript 输出文件。
这很耗时。
幸运的是,你可以使用一些 Node.js 模块自动化整个过程。
安装 Node.js 模块
nodemon
模块允许你在更改 JavaScript 源代码时自动重新启动应用程序。
concurrently
模块同时运行多个命令。
首先,从项目根目录执行 npm init
命令:
npm init --yes
接下来,安装 nodemon
和 concurrently
模块:
npm install --g nodemon concurrently
安装需要一些时间。
请注意,-g
标志将指示 npm 全局安装这两个模块。 这允许你在其他项目中使用它们。
然后,打开 package.json
文件,你会在 scripts
选项中看到类似这样的内容:
...
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
...
之后,将 scripts
选项更改为以下内容:
...
"scripts": {
"start:build": "tsc -w",
"start:run": "nodemon build/app.js",
"start": "concurrently npm:start:*"
},
...
这个 "start:build": "tsc -w"
将监视 ./src
目录中的更改并自动编译它们。
每当生成新文件时,"start:run":"nodemon build/app.js"
都会自动运行 ./build
目录中的 app.js
。
这个 "start": "concurrently npm:start:*"
运行所有以 npm:start:*
开头的命令,它同时执行上面的 start:build
和 start:run
命令。
由于 app.js
将成为 Node.js 程序的入口点,因此还需要将 package.json
文件中的以下选项更改为 app.js
:
从:
"main": "index.js"
修改为:
"main": "app.js"
最后,执行以下命令:
npm start
要验证配置,需要更改 app.ts
中的一些代码。 你将在控制台中看到输出。
在本教程中,你学习了如何设置在 Node.js 项目中使用 TypeScript 的开发工作流程。