2017-08-14 45 views
0

我发现了一个描述,在初始化一个打字原稿项目的NodeJS这里:https://basarat.gitbooks.io/typescript/docs/quick/nodejs.html带打字稿的npm nodejs项目;住构建并不重新编译改变模块

这也说明了一种将平变化autorecompile,如果我使用NPM启动运行代码。

我创建了这个配置的项目:

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" 
    } 
} 

重装工作正常,如果我改变mainfile server.ts

问题

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

任何想法?

回答

1

我不会推荐使用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用于编译,然后运行/重新运行节点。

备注: 脚本,然后可以使用“故宫运行开发”

+0

由于运行,你可以形容,你为什么不使用TS-节点? –

+0

ts-node编译所有的ts文件,监视更改并将它们提供给节点上的新实例,这对生产使用来说不是很好。 ts-node很适合进行测试。 – gilamran