1、配置ts開發node.js后台,需要的依賴有
npm i @types/node --save-d npm i ts-node --save-d npm i typescript --save-d
需要全局安裝一個重要依賴,實現開發環境熱更新
npm i nodemon -g
2、初始化tsconfig.json配置
{ "compilerOptions": { "target": "es5", "module": "commonjs", "moduleResolution": "node", "lib": ["dom", "es2015"], "allowSyntheticDefaultImports": true, "removeComments": true, "resolveJsonModule": true, }, "exclude": ["node_modules"] }
其他的可以按需要添加
3、添加nodemon.json配置
{ "restartable": "rs", "ignore": [".git", "node_modules/**", "dist"], "verbose": true, "execMap": { "": "node", "js": "node --harmony" }, "events": { "start": "", "crash": "", "exit": "", "restart": "" }, "ext": "js json ts tsx", "watch": ["./**"], "env": { "NODE_ENV": "development", "PORT": "3002" }, "legacy-watch": false }
解讀以上配置:
restartable:重啟的命令,默認是 rs ,可以改成你自己喜歡的字符串。當用 nodemon 啟動應用時,可以直接鍵入 rs 直接重啟服務。除了字符串值外,還可以設置 false 值,這個值的意思是當 nodemon 影響了你自己的終端命令時,設置為 false 則不會在 nodemon 運行期間監聽 rs 的重啟命令。
ignore:忽略的文件后綴名或者文件夾,文件路徑的書寫用相對於 nodemon.json 所在位置的相對路徑,下同。nodemon 會默認忽略一些文件,默認忽略的文件有:.git, node_modules, bower_components, .sass-cache,如果這些文件想要加入監控,需要重寫默認忽略參數字段 ignoreRoot,比如加入:"ignoreRoot": [".git", "bower_components", ".sass-cache"],然后在 watch 中將 node_modules 文件路徑加入監控,那么 node_modules 內的文件也加入了監控了
verbose:true 表示輸出詳細啟動與重啟信息,如下圖
false 表示不輸出這些運行信息,如下圖:
execMap:運行服務的后綴名和對應的運行命令,"js": "node --harmony" 表示用 nodemon 代替 node --harmony 運行 js 后綴文件;"" 指 www 這些沒有后綴名的文件;默認的 defaults.js 配置文件會識別一些文件:py: 'python',rb: 'ruby'。
events:這個字段表示 nodemon 運行到某些狀態時的一些觸發事件,總共有五個狀態:
-
start - 子進程(即監控的應用)啟動
-
crash - 子進程崩潰,不會觸發 exit
-
exit - 子進程完全退出,不是非正常的崩潰
-
restart - 子進程重啟
-
config:update - nodemon 的 config 文件改變
狀態后面可以帶標准輸入輸出語句,比如 mac 系統下設置: "start": "echo 'app start'",那么啟動應用時會輸出 app start 信息,其他類似命令如 ls,ps 等等標准命令都可以在這里定義。除此之外,也可以寫js來監控。
watch:監控的文件夾路徑或者文件路徑。
env:運行環境 development 是開發環境,production 是生產環境。port 是端口號。
ext:監控指定后綴名的文件,用空格間隔。默認監控的后綴文件:.js, .coffee, .litcoffee, .json。但是對於沒有文件后綴的文件,比如 www 文件,我暫時找不到怎么用 nodemon 去監控,就算在 watch 中包含了,nodemon 也會忽略掉。
legacy-watch:nodemon 使用 Chokidar 作為底層監控系統,但是如果監控失效,或者提示沒有需要監控的文件時,就需要使用輪詢模式(polling mode)
4、配置package.json
"scripts": { "start": "nodemon [--watch src/] -e ts,tsx --exec ts-node ./src/main.ts", //如果配置了nodemon.js中的文件,那么[]中的配置可以忽略 "build": "tsc ./src/main.ts --outFile ./dist/main.js --module amd", "check": "tsc -w" }
start => 表示啟動開發模式 意思是監聽文件增加ts
、tsx
兩種文件類型,使用ts-node運行main.ts
文件
build => 開發完成后進行構建 tsc 后面是入口文件, --outFile表示 輸出編譯后的文件地址 --module 表示采用amd模式編譯,也可以是commonjs, system等,配置如tsconfig里的module配置
check => 檢查ts的語法