一般在本地开发 Nest 应用的时候,可以在项目下面,执行一下 npm run start:dev 这个命令,它会直接在本地创建一个开发服务,这个服务的地址默认是 localhost:3000 。
可以打开一个 Http 客户端,然后请求一下这个地址,请求的方法使用 GET,请求的地址是 http://localhost:3000 。Nest 会返回一个字符串,Hello World 。
回到项目,打开 package.json,在 scripts 里面,找到 start:dev 这个命令。注意使用不同版本的 Nest 命令行工具创建的项目,这个命令的定义可能会不太一样。
在我的这个项目里运行 start:dev,执行的是 tsc-watch 这个东西,这个 tsc-watch,会出现在这个项目的 devDependencies 里面。
tsc-watch ,跟 TypeScript 里带的 tsc 命令差不多,主要的功能就是把 TypeScript 编译成 JavaScript 。不过这个 tsc-watch 多了一个监视功能,就是它可以检查一些文件的变化,有变化就会重新编译。
编译的时候用到了一个配置文件,tsconfig.build.json,后面还用了一个 --onSuccess 选项,编译成功,就会使用 node 运行一下编译好的在 dist 目录下面的 main.js 这个文件。这个文件是应用的入口文件。
下面可以简单试一下,打开 src,找到 app.service.ts ,修改一下它里面的 getHello 这个方法返回的字符串内容,换成 hello ~
保存一下文件,会重新编译 TypeScript,并且重新启动应用。 回到 Http 客户端,再请求一下 localhost:3000 。
这次返回的字符串是 hello ~
start
再回到项目,在 scripts 里面,还有一个 start 命令,这条命令用的是 ts-node 这个东西,直接运行了 src 目录下面的 main.ts。
node 不认识 TypeScript,但是这个 ts-node 认识 TypeScript,就是它可以直接运行没有被编译过的 TypeScript 代码。
用的这个 ts-node ,也已经放在了这个项目的 devDependencies 里面了,会作为这个项目的开发依赖。
一般我们在开发的时候最好使用 start:dev 这个命令,因为它实际上运行的是编译之后的应用,也就是以后正式要在生产环境上运行的应用。