自动化代替手动：解放生产力
===========

自动化代替手动的终极目标就是**解放生产力**。这一点在构建大型项目时极其重要：
- 自动化能够防止手动易发生的错误
- 自动化的维护成本极其低廉

那么，重复的事情就是**编译ts->重启**，这种傻瓜操作我们应该自动化代替掉，提高我们的开发效率。

**请大家务必记住这种思想，永远不要做重复的事情。**



安装nodemon
===========

nodemon是一款能够帮你自动化完成任务的程序，当然就能帮我们完成自动编译+重启了。

```
npm install --save nodemon
```

根目录下新建一个nodemon.json，复制一下内容
```json
{
    "ignore": [
        "**/*.test.ts",
        "**/*.spec.ts",
        ".git",
        "node_modules"
    ],
    "watch": [
        "src",
    ],
    "exec": "npm start",
    "ext": "ts"
}

```
- watch字段写的是你要监听的目录
- exec字段写的是「当你的目录改变时，执行的命令」，对于我们来说，其实就是编译+启动，这里我们写```npm start```

来到```package.json```,script标签下新增两行命令:
```json
"scripts": {
    "start": "tsc && NODE_ENV=development node ./dist/app.js ",
    "dev": "./node_modules/nodemon/bin/nodemon.js"
  },
```
- start命令就是我们编译启动程序的命令
- dev命令就是我们启动nodemon的命令

启动nodemon
===========

```
npm run dev
```

再次回到我们的src/app.ts下，随便写几行垃圾代码，然后按保存ctrl/command + s，此时，你就会看到，nodemon帮你自动编译，并且重启了。

```bash
[nodemon] 1.14.11
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: /Users/zf/Desktop/burnjs/src/**/* /Users/zf/Desktop/burnjs/app/**/*
[nodemon] starting `npm run start-ts`

```


nodemon的好处
=====

使用nodemon帮我们自动编译TS，能在ts编译出错的时候，爆掉，根本跑不起来。这一点，会强制我们必须按照ts的规则写代码，极大的保证了我们开发的规范性。

- 上一章：[大项目的标配Typescript](https://github.com/floveluy/Burnjs/blob/master/example/books/1.typescript%E7%9A%84%E5%AE%89%E8%A3%85%E4%B8%8E%E9%85%8D%E7%BD%AE.md)

- 下一章：[Koa拓展：路由拆分](https://github.com/floveluy/Burnjs/blob/master/example/books/3.%E8%B7%AF%E7%94%B1%E6%8B%86%E5%88%86.md)