精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Nest.js 這么大的項目是怎么優化 ts 編譯性能的?

開發
Nest 最近通過一個大 PR 把構建方式從 gulp + tsc 切換到了 tsc -b 也就是 project reference 的方式,這樣能極大的提升 tsc 編譯性能。

Nest.js 是流行的 node 服務端框架,最近我注意到它有一個大的 PR。

這個 PR 涉及到 50 多個文件,800 多行代碼的改動:

圖片

同學們肯定會覺得這么多代碼改動肯定是大版本升級無疑了。

然而,它并沒有更新版本號:

圖片圖片

可以看到 Nest 從 gulp 切換到了 tsc 編譯,但是版本號依然是 9.1.2。

為什么這么大的 PR 沒有改版本號呢?

看下 PR 的內容就知道了:

圖片

這個 PR 是從 gulp 切換到了 tsc 的 Project Reference,優化了編譯性能,并且啟動也更簡單了。

只是構建相關的優化,不更新版本號也正常。

有的同學可能會問了,Project Reference 是什么東西?為什么它能提升 tsc 編譯性能呢?

我們先看下之前 Nest 是怎么編譯 nest 源碼的:

圖片

通過 gulp 的 build 命令,產物輸出到 node_modules/@nestjs 下。

gulp 記錄了項目中每一個包的 tsconfig.json:

然后用 tsc 讀取每一個 tsconfig.json 來編譯 ts 代碼:

這個流程很容易理解,就是通過 tsc 根據一個個的 tsconfig.json 來編譯 ts 代碼,輸出到不同目錄,gulp 只是組織這個流程的。

那現在 tsc 又是怎么編譯的呢?

首先,現在不用 gulp 組織流程了,直接執行 tsc,只是加上了 -b,這個就是開啟 project reference 用的:

圖片

所謂的 project reference 就是這個東西:

圖片image.png

也就是 tsconfig 里通過 references 引用其他 project。

如果其他 project 也依賴別的 project 可以再次引用:

編譯的時候就會一起編譯。

這樣和單獨跑 tsc 不是一樣么?有區別么?

區別大了去了。

現在執行 tsc -b 之后會在每個 project 下生成這樣一個 tsconfig.build.tsbuildinfo 的文件:

每個 project 都有:

圖片

那這個文件有啥用呢?

看下內容就知道了:

它記錄了這個 project 所有編譯的文件名:

圖片

還有 hash 的版本號,是否訪問了全局作用域:

圖片

這樣再次編譯的時候有啥不一樣么?

那肯定是編譯過后的就不用編譯了呀,相當于做了一層緩存,每次對比下改動的文件的 hash,如果有變化才去編譯。

不同的 project 是分開緩存的,一個 project 變了只要單獨編譯那個 project 即可,其余的就可以跳過了。

這樣自然就可以提升編譯性能。

不過它提升的只是第二次編譯的性能,首次編譯還是要全量編譯的。

這也是為什么 PR 里提到的是更快的 rebuild:

圖片

為什么從 gulp 切換到 tsc project reference 我們知道了。那新版的 nest 如何調試呢?

我們直接用 nest 項目自帶的案例調試就行。

nest 提供了 sample 目錄,下面有很多案例項目:

圖片

我們新建一個 .vscode/launch.josn 的調試配置文件:

圖片

image.png

新增這樣的調試配置:

{
"name": "Launch via NPM",
"request": "launch",
"runtimeArgs": ["run-script", "start"],
"runtimeExecutable": "npm",
"console": "integratedTerminal",
"cwd": "${workspaceFolder}/sample/01-cats-app/",
"skipFiles": ["<node_internals>/**"],
"type": "node"
}

這個配置很容易看明白,就是在 01-cats-app 這個目錄下執行 npm run start。

那 console 指定為 integratedTerminal 是什么意思呢?

跑一下就知道了:

跑起服務來,打個斷點,訪問 localhost:3000/cats,你會發現日志是打印在 debug console 的:

沒有顏色,這自然用的不習慣。

指定 console 為 integratedTerminal,再重新調試:

圖片

現在日志就打印在 terminal 了,是不是順眼多了?

這是調試 nest 項目的方式。

那怎么調試 nest 源碼呢?

現在調用棧里的 nest 代碼都是編譯過后的:

圖片

想調試源碼就要有 sourcemap。

默認 nest 編譯不產生 sourcemap,我們要改下編譯配置:

圖片

改下 packages/tsconfig.build.json,加上這兩個配置就可以了。

sourceMap 為 true 就是生成 sourcemap 的意思,inlineSources 是在 sources 里保存源碼,默認生成的 sorucemap 是不包含源碼的。

執行 npm run build。

你就會發現生成了 sorucemap:

但是 node_modules/@nestjs 下還是沒有 sourcemap,這是因為還少了一步:

nest 的 build 命令有個后置命令:

圖片

每次 build 完就會自動把這些文件復制到 node_modules/@nestjs 下:

圖片

默認沒有編譯出 sourcemap,自然也就沒有 move 這部分文件。

補上這塊,再次執行 npm run build:

圖片

然后去 node_modules 下看一眼:

圖片

現在就有 sourcemap 了,完美!

然后再跑下 nest 項目的調試:

圖片

咋還不是源碼呢?

這確實比較坑,因為有個默認配置,禁掉了 node_modules 下的 sourcemap 查找:

圖片

去掉即可:

圖片

然后重新跑調試:

圖片

這時候你就會發現調試的是 nest 的 ts 源碼了!

總結

nest 最近通過一個大 PR 把構建方式從 gulp + tsc 切換到了 tsc -b 也就是 project reference 的方式,這樣能極大的提升 tsc 編譯性能。

原理就是 project reference 的模式會生成一個緩存文件記錄著每個 project 編譯了哪些文件,hash 是啥,這樣再次編譯就可以跳過沒有更新的文件。

新版 nest 源碼的調試也同樣需要生成 sourcemap,修改下編譯配置,生成 sourcemap 的代碼即可(只不過要注意 VSCode Node Debugger 的一個坑,默認不查找 node_modules下的 sourcemap)。

然后就可以愉快的調試 nest 的 ts 源碼了!

nest 這么大的項目都用了 tsc project reference 來優化編譯性能,那平時我們的項目自然也可以用 project reference 來優化,ts 編譯性能優化的時候不妨往這方面考慮一下。

責任編輯:趙寧寧 來源: 神光的編程秘籍
相關推薦

2022-03-18 21:51:10

Nest.jsAOP 架構后端

2021-06-18 06:48:54

前端Nest.js技術熱點

2021-12-22 06:56:06

MySQCrudjs

2021-12-27 20:29:21

機制PipeExceptionFi

2022-02-02 20:21:24

短信驗證碼登錄

2022-03-02 14:00:46

Nest.jsExpress端口

2023-01-30 09:01:34

DecoratorsJS語法

2021-10-28 17:40:22

Nest.js前端代碼

2024-05-06 08:48:18

nestjava?MVC?

2024-02-04 19:15:09

Nest.js管理項目

2024-05-21 10:35:34

2021-06-29 06:25:22

Nest.jsTypeORM數據庫

2022-01-14 14:19:38

ReactTS前端

2018-10-11 16:15:25

微軟Windows10操作系統

2010-07-26 16:35:34

Perl性能

2022-02-18 07:27:01

Nest項目

2025-07-28 01:22:00

2025-03-20 12:33:36

2024-09-09 05:30:00

數據庫Spring

2024-03-15 09:26:59

點贊
收藏

51CTO技術棧公眾號

亚洲精品一区二区三区在线观看| 亚洲欧洲色图综合| 国产成人涩涩涩视频在线观看| 日韩精品无码一区二区三区久久久 | 98视频精品全部国产| 欧美日韩精品在线| 在线视频不卡一区二区| 人妻无码中文字幕免费视频蜜桃| 日韩激情视频在线观看| 欧美大片在线看| 亚洲精品91在线| 99国产精品免费网站| 欧美色男人天堂| 少妇久久久久久被弄到高潮| 国产天堂素人系列在线视频| 国产成人午夜精品5599| 国产精品国产三级国产专播精品人 | 亚洲国产日产av| 亚洲精品第一区二区三区| 日本黄色大片视频| 黑人巨大精品欧美黑白配亚洲| 26uuu亚洲国产精品| 麻豆视频在线免费看| 精品视频国产| 日韩经典中文字幕在线观看| 日韩精品――色哟哟| 国产91精品在线| 精品日本美女福利在线观看| 9191国产视频| 免费网站看v片在线a| 91网站在线观看视频| 99影视tv| 国产精品视频第一页| 日韩不卡免费视频| 日韩美女中文字幕| 丰满少妇乱子伦精品看片| 欧美国产另类| 另类色图亚洲色图| 一本一本久久a久久| 欧美日韩黑人| 国产一区二区三区久久精品| 日韩av在线看免费观看| 亚洲精品一级二级三级| 亚洲国产日韩精品在线| 中文字幕永久免费| 国内不卡的一区二区三区中文字幕| 欧美性一二三区| 亚洲性生活网站| 成人日韩精品| 欧美性大战久久久久久久蜜臀| 亚洲熟妇av日韩熟妇在线| 黑人极品ⅴideos精品欧美棵| 亚洲猫色日本管| 在线观看免费黄色片| 精品孕妇一区二区三区| 中文字幕在线不卡视频| 中国成人在线视频| 老司机午夜在线视频| 亚洲视频网在线直播| 国产三级中文字幕| 丝袜综合欧美| 午夜精品久久久久| 欧美性大战久久久久xxx| 中文一区一区三区高中清不卡免费| 精品国产福利在线| 欧美黄网站在线观看| 姬川优奈av一区二区在线电影| 在线观看视频一区二区| 91亚洲精品久久久蜜桃借种| 99久久999| 日韩一二三四区| 强迫凌虐淫辱の牝奴在线观看| 任你弄精品视频免费观看| 亚洲精品在线91| 男人天堂资源网| 欧美91视频| 午夜精品福利电影| 成人一级免费视频| 国产在线播放一区三区四| 国产二区不卡| 久久久久久青草| 综合久久久久久久| 国产av天堂无码一区二区三区| 悠悠资源网亚洲青| 欧美日韩大陆在线| 国产一级黄色录像| 日本一区二区高清不卡| 色综合久久88| 国产一区二区视频网站| 黑人巨大精品欧美黑白配亚洲| 国产精品日韩一区二区 | 精品视频一区二区三区在线观看| 欧美精品一区二区三区蜜臀 | 国产精品一区二区av交换| 日韩色av导航| 国产成人亚洲欧洲在线| 蜜臀av性久久久久蜜臀aⅴ流畅| 99re在线观看视频| 加勒比一区二区三区在线| 亚洲三级电影全部在线观看高清| 欧美国产日韩激情| 久久精品国产福利| 亚洲国产精品成人av| 极品蜜桃臀肥臀-x88av| 激情久久中文字幕| 91精品久久久久久| 天天av天天翘| 亚洲人精品一区| 欧美成人黑人猛交| 农村少妇一区二区三区四区五区 | 久久爱www久久做| 加勒比在线一区二区三区观看| 1769在线观看| 日韩欧美国产视频| 亚洲美女高潮久久久| 欧美1级片网站| 日本91av在线播放| 丰满少妇在线观看bd| 国产精品卡一卡二卡三| 日本黄色三级大片| 精品视频自拍| 欧美激情精品久久久久| 91九色蝌蚪91por成人| 久久夜色精品国产噜噜av| www.夜夜爱| 婷婷久久免费视频| 在线免费看av不卡| 久久久久女人精品毛片九一| 成人午夜又粗又硬又大| 成年丰满熟妇午夜免费视频| 欧美美女福利视频| 最近2019好看的中文字幕免费| 色屁屁影院www国产高清麻豆| 国产精品亚洲成人| 亚洲黄色网址在线观看| 青草综合视频| www.久久色.com| 中文字幕乱码一区二区| 欧美激情中文字幕| 国产一二三四在线视频| 国产欧美日韩在线一区二区| 欧美壮男野外gaytube| 色婷婷av一区二区三区之e本道| 亚洲另类中文字| 亚洲免费黄色录像| 婷婷伊人综合| 99久久自偷自偷国产精品不卡| 黄a在线观看| 欧美一区在线视频| 久久中文免费视频| 国产成人8x视频一区二区| 免费看日b视频| 91精品日本| 亚州国产精品久久久| 亚州视频一区二区三区| 欧美视频二区36p| avtt香蕉久久| 久久免费高清| 亚洲一区二区三区欧美| av在线亚洲一区| 久久91精品国产| 五月激情婷婷网| 色乱码一区二区三区88| jizz日本在线播放| 国产原创一区二区| 可以看毛片的网址| 免费观看久久av| 国产美女精品视频| 亚洲小说区图片区都市| 亚洲激情视频在线| 国产女主播喷水视频在线观看 | 久久久久久久久网| 给我免费播放日韩视频| 26uuu国产精品视频| av网在线观看| 日韩三级视频在线看| 日本学生初尝黑人巨免费视频| 久久久欧美精品sm网站| 色综合色综合色综合色综合| 在线中文一区| 久久久久久艹| 伊人国产精品| 性欧美视频videos6一9| 番号集在线观看| 欧美va亚洲va香蕉在线| 中文字幕一区二区人妻电影| 自拍偷拍欧美精品| 久久人人爽人人爽人人片| 男男视频亚洲欧美| 国产尤物av一区二区三区| 亚州av日韩av| 91在线|亚洲| 亚洲欧洲高清| 欧美乱大交xxxxx另类电影| 午夜国产在线观看| 欧美高清性hdvideosex| 圆产精品久久久久久久久久久| 久久精品在线免费观看| 无码人妻一区二区三区精品视频 | 午夜精品一区二区三区电影天堂 | 国产精品久久一区二区三区不卡 | 四虎久久免费| 亚洲激情免费观看| 国产精品无码天天爽视频| 精品国产老师黑色丝袜高跟鞋| 日本猛少妇色xxxxx免费网站| 粉嫩嫩av羞羞动漫久久久| 欧美男女交配视频| 国产日韩一区二区三区在线播放 | 99在线精品免费视频九九视| 伊人久久婷婷色综合98网| 欧美色图五月天| 亚洲sss综合天堂久久| 范冰冰一级做a爰片久久毛片| 超薄丝袜一区二区| a视频网址在线观看| 亚洲国产精品久久久久| 国产乱码精品一区二区三区精东| 日韩欧美成人精品| 精品无码人妻一区二区三区品| 国产精品久久久久三级| 久久午夜福利电影| aaa亚洲精品一二三区| 1314成人网| 美女视频一区在线观看| 欧美一级黄色影院| 在线亚洲一区| 性高湖久久久久久久久aaaaa| 99精品全国免费观看视频软件| 日本一区二区久久精品| 一区二区三区日本久久久| 国产另类自拍| 伊人久久亚洲| 91视频国产高清| 日本午夜免费一区二区| 国产在线精品播放| 成人黄页网站视频| 国产精品扒开腿爽爽爽视频| 欧美日韩美女| 日产精品久久久一区二区福利| 夜鲁夜鲁夜鲁视频在线播放| 91成人免费观看网站| av免费不卡| 97婷婷涩涩精品一区| аⅴ资源天堂资源库在线| 久久久亚洲精选| sis001亚洲原创区| 久久久久女教师免费一区| 欧美6一10sex性hd| 欧美激情精品久久久| 波多野结衣中文字幕久久| 欧美激情一区二区三区高清视频 | 99精品视频在线| 一区二区视频国产| 亚洲精品a级片| 蜜臀在线免费观看| 欧美激情一区| 欧美视频在线观看视频| 亚洲国产一区二区三区a毛片| av免费观看国产| 欧美性开放视频| 国产91在线视频观看| 一本色道久久综合亚洲精品不| 国产精品无码av在线播放| 亚洲欧美清纯在线制服| 亚洲 高清 成人 动漫| 久久国产成人| av在线网址导航| 国产一区视频导航| 第一页在线视频| 91视频一区二区| 免费视频91蜜桃| 最新久久zyz资源站| 国产在线观看免费av| 欧美视频免费在线| 亚洲天堂网视频| 日韩一二三四区| 天天干视频在线观看| 亚洲男人天堂网站| 欧美a在线看| 欧美疯狂xxxx大交乱88av| 川上优av中文字幕一区二区| 国产999在线| 精品中文字幕一区二区三区| 国产精品一 二 三| 欧洲美女日日| 欧美另类videos| 亚洲综合日本| 国产成人美女视频| 成人av在线播放网址| 久久亚洲无码视频| 亚洲小说欧美激情另类| 亚洲欧美另类在线视频| 欧美一区二区三区系列电影| 天天综合在线视频| 日韩性xxxx爱| 三级在线观看视频| 91在线观看免费| 少妇一区二区三区| 欧美做受777cos| 日韩av不卡在线观看| 在线观看一区二区三区视频| 久久蜜桃一区二区| 免费在线视频观看| 欧美三级在线看| av女名字大全列表| 欧美巨乳美女视频| 78精品国产综合久久香蕉| av一区和二区| 99久久久久| 四虎永久在线精品无码视频| 国产1区2区3区精品美女| 呻吟揉丰满对白91乃国产区| 黄网动漫久久久| 国产三级在线观看视频| 国产亚洲视频中文字幕视频| 国产夫妻在线播放| 91色精品视频在线| 久久高清免费| 亚洲 中文字幕 日韩 无码| www.色综合.com| 久久精品一级片| 在线播放91灌醉迷j高跟美女 | 亚洲爆乳无码专区| 成人av网址在线观看| 一区二区成人免费视频| 欧美在线一二三| 亚洲 美腿 欧美 偷拍| 欧美激情在线观看视频| 欧美三级一区| 超碰97免费观看| 另类调教123区| 精品人妻一区二区三区蜜桃视频| 福利一区福利二区微拍刺激| 亚洲成人黄色片| 欧美大奶子在线| 成人国产精品久久| 中日韩在线视频| 久久精品免费观看| 精品少妇一区二区三区密爱| 欧美人体做爰大胆视频| 91涩漫在线观看| 国产精品久久久久久久app| 久操国产精品| 日本一区二区黄色| 久久婷婷久久一区二区三区| 在线能看的av| 精品无码久久久久久国产| 欧美私密网站| 欧美成人dvd在线视频| 麻豆九一精品爱看视频在线观看免费| 短视频在线观看| 色婷婷综合激情| 川上优的av在线一区二区| 国产精品久久77777| 欧美日韩水蜜桃| 亚洲欧美aaa| 亚洲精品乱码久久久久| 亚洲精品国产suv一区| 欧美激情视频网址| 欧美三级自拍| 九九热在线免费| 亚洲欧美日韩国产综合在线| av中文字幕免费在线观看| 久久久在线视频| 最近国产精品视频| 日本熟妇人妻中出| 亚洲女同女同女同女同女同69| 国产黄色一级大片| 97国产精品免费视频| 亚洲素人在线| 色一情一区二区三区| 一区二区三区精品视频在线| 五月激情婷婷综合| 国产精品xxxxx| 欧美成人日本| 黑丝av在线播放| 欧美日韩视频专区在线播放| 超碰超碰在线| 国产综合av一区二区三区| 亚洲综合精品四区| 欧洲美女女同性互添| 欧美成人官网二区| 欧洲av不卡| 老司机午夜网站| 久久先锋影音av| 国产乱码精品一区二三区蜜臂| 久久久亚洲欧洲日产国码aⅴ| 国产日韩视频在线| 少妇性l交大片7724com| 欧美性xxxx极品高清hd直播 | 欧美精品videosex性欧美| 久久悠悠精品综合网| 亚洲这里只有精品| 亚洲最大成人综合| 懂色av中文在线| 国产亚洲二区| 国内精品视频666| 亚洲天堂av片| 欧美精品激情在线|