TS-NODE
可以看出這些不足都來自於一個根本原因,運行之前需要編譯。后來我就發現了一個很強大的工具ts-node,來看下ts-node的簡介:
TypeScript execution environment and REPL for node.
簡單的說就是它提供了TypeScript的運行環境,讓我們免去了麻煩的編譯這一步驟。最簡單的例子,在注冊ts-node之后,我們就可以直接加載並運行ts文件
require('ts-node').register();
// 這樣就能直接加載並運行 ./ts-code.ts...
require('./ts-code');
TS Config
為了斷點調試,我們需要在tsconfig.json中開啟sourceMap
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"noImplicitAny": true,
"outDir": "./dist",
"sourceMap": true
},
"include": [
"src/**/*"
],
}
VSC Launch.json 配置
為ts-node注冊一個vsc的debug任務,修改項目的launch.json文件,添加一個新的啟動方式
{
"name": "Current TS File",
"type": "node",
"request": "launch",
"args": [
"${workspaceRoot}/src/index.ts" // 入口文件
],
"runtimeArgs": [
"--nolazy",
"-r",
"ts-node/register"
],
"sourceMaps": true,
"cwd": "${workspaceRoot}",
"protocol": "inspector",
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen"
}
通過這些簡單的配置,我們在vsc的debug界面中選擇Debug by ts-node的任務,就可以開始愉快的調試了,修改代碼之后直接重啟服務即可,這里簡單的介紹一些vsc debug相關的快捷鍵,參考
- F5 – 開始調試、繼續執行
- cmd(ctrl) + shift + F5 – 重啟
- shift + F5 – 結束調試
- F9 – 添加斷點
- F10 – 單步跳過
- F11 – 單步調試
- shift + f11 – 單步跳出
調試當前打開ts文件
{
"name": "Current TS File",
"type": "node",
"request": "launch",
"args": [
"${relativeFile}"
],
"runtimeArgs": [
"--nolazy",
"-r",
"ts-node/register"
],
"sourceMaps": true,
"cwd": "${workspaceRoot}",
"protocol": "inspector",
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen"
}
調試 mocha 測試代碼
在launch.json中添加
{
"name": "Debug Current TS Tests File",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}/node_modules/.bin/_mocha",
"args": [
"-r",
"ts-node/register",
"${relativeFile}", // 調試當前文件
"--colors",
"-t 100000" // 設置超時時間,因為調試時執行時間較長容易觸發超時
],
"cwd": "${workspaceRoot}",
"protocol": "inspector"
}
然后打開一個包含mocha單元測試的ts文件,添加斷點,運行Debug Current TS Tests File即可進行斷點調試。 運行項目中的所有單元測試建議在package.json中添加test腳本,比如
"scripts": {
"test": "mocha -r ts-node/register src/**/*.spec.ts --colors"
}
然后運行npm test即可
