搭建 Typescript + Nodejs 的命令行开发环境

本文记录了搭建基于 TypeScript 的 Nodejs 命令行开发环境的全过程。node

为什么使用TypeScript

首先,对于编写类库或者工具而言,使用 TypeScript 的最大好处就是其提供了类型机制,能够避免咱们犯一些低级错误。git

其次,配合编辑器(如 VS Code),TypeScript 能提供强大的代码提示功能,咱们不须要记忆不少API的具体使用,在编写代码时编辑器会自动进行提示。好比引入了 http 以后,输入 http. 就会提示可使用的各个方法和属性,并给出详细的说明。github

同是微软旗下,VS Code 具备很是强大便利的功能,强烈推荐使用 VS Code 进行 TypeScript 和 Nodejs 开发。typescript

最后,使用 TypeScript 是大势所趋,不少大公司都在推 TypeScript,使用 TypeScript 开发,可让咱们对 TS 使用更加熟练。npm

初始化工程

创建命令行工具,须要先建立一个 npm 包。下文将使用 npm 工具来完成包的初始化和依赖的安装。json

首先建立一个文件夹,而后运行初始化命令:bash

mkdir ts-node-demo && cd ts-node-demo
npm init
复制代码

控制台会出现一系列提示, 按照需求输入便可,而后一路回车,完成以后输入 yesmarkdown

package name: (typescript-cli) 
version: (1.0.0) 
description: a cli in typescript
entry point: (index.js) 
test command: 
git repository: 
keywords: CLI,TypeScript
author: YourName
license: (ISC) MIT
复制代码

初始化以后本地文件夹会出现一个 package.json 文件。咱们的 npm 包就已经初始化完成了。为了不误发布,咱们在 package.json 中作一个更改:编辑器

- private: false,
+ private: true,
复制代码

初始化 Git

在当前目录下运行:工具

git init
复制代码

而后在当前目录建立 .gitignore 文件,指定忽略 node_modules 文件夹:

node_modules/
lib/
复制代码

引入 Node 类型

既然是开发 Nodejs 程序,为了得到合适的类型校验和代码提示,咱们须要引入 Nodejs 的类型文件:

npm i -D @types/node
复制代码

引入 typescript

npm i typescript
复制代码

而后须要初始化 tsconfig 文件。

./node_modules/.bin/tsc --init
复制代码

上述命令会在当前文件夹下面建立一个 tsconfig 文件,用来指导 TypeScript 进行编译。 在里面有很是多的配置项,而且有很是详细的解释,咱们作两个更改来适配咱们的项目:

+ "sourceMap": true,
+ "outDir": "lib",
复制代码

上述配置指定生成 sourceMap 文件,并将 TypeScript 的编译结果输出到 ./lib 文件夹.

而后在与 compilerOptions 平级的地方增长选项:

"compilerOptions": {
    ...
},
+ "include": [
+ "src/**/*"
+ ]
复制代码

这表示咱们只会编译 src 目录下的 .ts 文件。

编写代码

在当前目录下建立 src 文件夹,并建立 index.ts

mkdir src && echo "console.log('Your cli is running.');" > src/index.ts
复制代码

而后运行:

./node_modules/.bin/tsc 
复制代码

能够发如今文件夹下出现了 lib/ 目录,里面就是 index.ts 编译以后的 js 文件。

建立运行脚本

每次编译都须要引用 node_modules 里面的 tsc 命令,有些繁琐,有三种方法能够解决:

  1. 全局安装 typescript 包:
npm i typescript -g
复制代码

就能够直接使用 tsc 命令了。

  1. 使用 npx 执行

npx 是 npm 提供的命令,其会自动下载对应的包并执行.

npx tsc
复制代码
  1. 建立 npm 脚本

package.json 中的 script 中增长一行脚本:

"script": {
+ "build": "tsc"
}
复制代码

这里咱们采用第3种方法,写入脚本后能够执行:

npm run build
复制代码

也会成功进行编译。

注册命令

开发 Nodejs 命令行工具,就是提供一个能够直接调用的命令,而不是使用下面这种方式执行文件:

node lib/index.js
复制代码

咱们想要的效果是执行一个命令就能调用咱们的 js 文件。

首先在当前文件夹建立文件 bin/node-cli-demo :

mkdir bin && touch bin/node-cli-demo.js
复制代码

而后在文件中写入如下内容:

#!/usr/bin/env node
require('../lib/index.js');
复制代码

npm 包注册的命令须要在 package.json 中进行声明,增长以下内容:

{
    "name": "typescript-cli",
    "version": "0.0.1",
+ "bin": {
+ "node-cli-demo": "./bin/node-cli-demo.js"
+ },
}
复制代码

这表示当执行 node-cli-demo 这个命令时就去执行咱们的 ./bin/node-cli-demo.js 文件。

最后在当前目录调用 npm link ,这条命令会把咱们本地注册的命令放到 Nodejs 安装目录的 bin 文件夹下。在安装 Nodejs 时系统将该文件夹添加到命令查找的路径中。因此咱们就能够直接使用咱们刚刚注册的命令:

node-cli-demo
// Your cli is running.
复制代码

自动监听文件变更

咱们但愿每次更改了 .ts 文件以后,没必要手动执行 npm run build 就能看到最新的效果,可使用 typescript 的 --watch 选项,在 package.json 中的 script 中增长 start 命令:

{
    "script": {
+ "start": "tsc --watch"
    }
}
复制代码

在当前目录下运行命令:

npm start
复制代码

而后对 src/index.ts 文件作一些更改,另开一个控制台窗口,运行 node-cli-demo,会发现打印的内容已经更新了。 这样咱们在开发时就只须要关注代码编写,而不用考虑编译的问题了。

接下来咱们就能够在 src 文件里面写咱们的具体代码了!

注: 本文的 demo 代码能够在 github 上查看。为了不建立不少仓库,我将其放到了一个仓库的子目录里面。

总结

使用 TypeScript 开发 Nodejs 命令行的流程以下:

  1. 安装 typescript 并进行配置;
  2. package.json 中声明命令并使用 npm link 将其连接到全局命令中;
  3. 使用 tsc --watch 自动监听文件变更并从新编译;
  4. 运行注册过的命令,查看效果。

以上就是搭建 Nodejs 命令行的 TypeScript 开发环境的所有内容了,但愿能帮到你们~ 欢迎关注我,后续会继续写更多优质博客与你们分享。同时,有任何问题,欢迎一块儿讨论~

本文首发于个人博客,欢迎点击~

相关文章
相关标签/搜索