npm nodejs项目与打字稿;实时构建不会重新编译已更改的模块

时间:2017-08-14 19:05:34

标签: node.js typescript npm

我在这里找到了在typescript中初始化nodejs项目的描述:https://basarat.gitbooks.io/typescript/docs/quick/nodejs.html

如果我使用npm start运行代码,这也描述了一种自动编译onchange的方法。

我使用此配置创建了一个项目:

tsconfig.json:

{
  "compilerOptions": {
    /* Basic Options */
    "target": "es2015",                          /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', or 'ESNEXT'. */
    "module": "commonjs",                     /* Specify module code generation: 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
     "outDir": "./build",                        /* Redirect output structure to the directory. */
    /* Strict Type-Checking Options */
    "strict": true                            /* Enable all strict type-checking options. */
  },
  "files":[
    "server.ts",
    "db/db.ts",
    "protocol/protocol.ts"
  ]

}

的package.json

{
  "name": "server",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "scripts": {
    "start": "npm run build:live",
    "build:live": "nodemon --exec node_modules\\.bin\\ts-node -- server.ts",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "typescript": "^2.4.2"
  },
  "devDependencies": {
    "@types/express": "^4.0.36",
    "@types/node": "^8.0.20",
    "express": "^4.15.4",
    "mysql": "^2.14.1",
    "nodemon": "^1.11.0",
    "ts-node": "^3.3.0",
    "typescript": "^2.4.2"
  }
}

如果我更改主文件server.ts

,重新加载工作正常

问题

如果我更改了db.ts或protocol.ts,则会执行重新加载,但不会重新编译db.ts和protocol.ts。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我不建议使用nodemon和ts-node来做dev,而是建议使用tsc-watch

npm install tsc-watch --save-dev

在你的package.json中你应该这样做:

  "scripts": {
    "start": "node ./build/server.js",
    "build": "tsc",
    "dev": "tsc-watch --onSuccess \"node ./build/server.js\"",
  }
  • build用于构建您的应用以准备投放。
  • start仅用于在制作时启动您的应用。
  • dev用于编译然后运行/重新运行节点。

<强> REMARK: 然后可以使用“npm run dev”

运行脚本