精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲 小说 欧美 激情 另类| 51xx午夜影福利| 一级黄色在线视频| 精品国产一区探花在线观看 | 日韩三级在线免费观看| 乱熟女高潮一区二区在线| 免费国产黄色片| 久久精品亚洲一区二区| 播播国产欧美激情| a天堂视频在线观看| 日韩欧美一区二区三区在线观看| 国产精品电影院| 99久久精品无码一区二区毛片| 日本免费一二三区| 国产欧美日韩一区二区三区四区| 欧美人伦禁忌dvd放荡欲情| 国产美女在线一区| 在线免费黄色| 成人国产精品免费观看动漫| 国产精品99久久99久久久二8| av最新在线观看| 成人爽a毛片| 欧美性xxxxxx少妇| 国产www免费| 免费网站成人| 久久九九久久九九| 99视频免费观看| 亚洲综合精品国产一区二区三区| 黄色日韩在线| 久久韩剧网电视剧| 成人免费无码大片a毛片| 日韩三级一区| 一本色道综合亚洲| 日韩成人三级视频| 免费人成在线观看播放视频| 久久久99久久精品欧美| 国产女人水真多18毛片18精品| 在线亚洲欧美日韩| 久久午夜视频| 97超碰色婷婷| 久久免费播放视频| 66视频精品| 色妞在线综合亚洲欧美| 国产特黄级aaaaa片免| av日韩在线播放| 欧美一区二区三区免费视频| 中文字幕国产免费| 国产一区二区三区朝在线观看| 精品福利在线视频| 国产真人做爰毛片视频直播| 羞羞视频在线免费国产| 国产精品福利一区二区三区| 日本精品一区二区三区不卡无字幕| 日本精品999| 成人永久aaa| 亚洲一区亚洲二区亚洲三区| 国产精品国产三级国产aⅴ| 轻轻草成人在线| 国产成人97精品免费看片| 日韩成人在线免费视频| 亚洲激情偷拍| 性色av一区二区三区| 精品无码久久久久| 影音先锋在线一区| 国模精品系列视频| 欧美亚洲天堂网| 国产美女一区| 国产成人97精品免费看片| 免费视频久久久| 国产精品婷婷| 青青草成人在线| 日本a级c片免费看三区| 鲁大师影院一区二区三区| 欧美影院在线播放| 97人妻一区二区精品视频| 日韩黄色片在线观看| 国产精品wwwwww| 在线观看免费高清视频| 韩国精品在线观看| wwwxx欧美| 三级网站免费观看| 91理论电影在线观看| 欧美日韩三区四区| 在线视频91p| 亚洲精品国产成人久久av盗摄 | 色鬼7777久久| 中文字幕乱码一区二区免费| 免费观看黄色大片| 黄色成人在线网| 欧美性色xo影院| 日日噜噜噜噜久久久精品毛片| 亚洲青青一区| 精品福利一区二区三区| 最新在线黄色网址| 日韩成人三级| 欧美高清自拍一区| 日本特级黄色片| 久久国产精品露脸对白| 国产精品三区四区| 东凛在线观看| 亚洲一区二区黄色| 国产aaa一级片| 外国成人毛片| 亚洲第一偷拍网| 男人的天堂av网| 欧美/亚洲一区| 97久久久久久| 一区二区不卡视频在线观看| 波多野结衣中文字幕一区二区三区| 欧美一区二区三区成人久久片 | 国产精品久久久久久久久晋中| 日本精品福利视频| 成人免费看黄| 欧美变态tickle挠乳网站| 免费在线观看污| 一精品久久久| 日韩av大片在线| 成人午夜免费福利| 国产精品三级在线观看| 黄页免费在线观看视频| 99综合99| 国产亚洲精品久久久优势| 久久久久无码国产精品不卡| 免费在线观看一区二区三区| 国产亚洲第一区| 巨大荫蒂视频欧美另类大| 色婷婷av一区| 国产精品果冻传媒| 亚洲成人最新网站| 国产欧美日韩免费| 欧美日韩伦理片| 亚洲国产欧美另类丝袜| 色婷婷一区二区三区av免费看| 亚洲三级性片| 97视频色精品| 精品黑人一区二区三区在线观看 | 欧美在线啊v一区| theav精尽人亡av| 欧美日韩p片| 成人在线免费观看视视频| 精品视频二区| 欧美色播在线播放| 波多野结衣加勒比| 欧美日韩精品免费观看视频完整| 国产在线观看精品| www黄在线观看| 日本二三区不卡| 成人网站免费观看| 欧美一级一区| 久久久久高清| 丝袜诱惑一区二区| 日韩精品欧美国产精品忘忧草| 久久久久久久久精| 国产成人免费视频| 成人av在线播放观看| 亚洲日本va午夜在线电影| 久久精品国产一区二区三区| 中文字幕av无码一区二区三区| 久久久久久**毛片大全| 亚洲熟妇av一区二区三区| 日韩美脚连裤袜丝袜在线| 51色欧美片视频在线观看| 午夜国产在线观看| 色综合久久88色综合天天6| 免费看黄色的视频| 奇米影视一区二区三区| 中文精品一区二区三区| 亚洲欧洲二区| 欧美国产乱视频| 蜜桃在线一区二区| 午夜视频在线观看一区二区| 波多野结衣影院| 久久国产直播| 亚洲精品中文字幕乱码三区不卡| 日韩电影精品| 欧美日产国产成人免费图片| 国产成人自拍一区| 日韩欧美大尺度| 国产视频不卡在线| 韩日欧美一区二区三区| 免费在线看黄色片| 天堂av一区二区三区在线播放| 日本高清视频一区| 日本在线www| 日韩三级电影网址| 日本系列第一页| 久久久99精品免费观看不卡| 天天综合天天添夜夜添狠狠添| 亚洲精品小说| 国产一区二区无遮挡| 影视一区二区三区| 欧美成人三级视频网站| 神马午夜电影一区二区三区在线观看| 狠狠做深爱婷婷久久综合一区| 日韩中文字幕电影| 久久成人久久爱| 亚洲 欧美 综合 另类 中字| 欧美1区二区| 国产噜噜噜噜噜久久久久久久久 | 欧美激情网站在线观看| 欧美69xxxxx| 日韩欧美一区二区免费| 在线观看 亚洲| 亚洲人成网站在线| 无码h肉动漫在线观看| 黄色日韩网站视频| 成人免费观看视频在线观看| 亚洲精品888| 日韩免费三级| 老牛影视av一区二区在线观看| 国产欧美在线播放| 中文字幕资源网在线观看免费 | 在线观看不卡一区| 国产精品2020| 国产精品二三区| 在线免费观看麻豆| 国产精品亚洲а∨天堂免在线| 成人一级片网站| 狠狠爱综合网| 一个色的综合| 九九久久精品| 动漫一区二区在线| 婷婷丁香久久| 国产精品草莓在线免费观看| а√在线天堂官网| 欧美成人性色生活仑片| av在线电影网| 日韩毛片在线看| 亚洲AV无码成人片在线观看| 欧美日本一道本在线视频| 黄色免费av网站| 亚洲国产美女搞黄色| 尤物在线免费视频| 亚洲国产精品国自产拍av| 国产精品三级在线观看无码| 国产成人av资源| 九色91porny| 久久99这里只有精品| 亚洲一级片免费| 日韩影院精彩在线| 久久久久狠狠高潮亚洲精品| 国产精品美女久久久| 无码 制服 丝袜 国产 另类| 欧美+亚洲+精品+三区| 欧美亚洲视频一区| 国产精品videosex性欧美| 色一情一乱一伦一区二区三区 | 国产一区二区三区久久久| 午夜欧美福利视频| 日韩激情av在线| 91网址在线播放| 日韩av中文字幕一区二区 | 天天做夜夜爱爱爱| 国产精品成人一区二区艾草| 谁有免费的黄色网址| 久久久99久久精品欧美| 亚洲久久久久久久| 中文在线免费一区三区高中清不卡| 一区二区三区四区免费| 久久嫩草精品久久久精品| 真实乱视频国产免费观看 | 欧美一区二区性放荡片| 国产美女免费视频| 日韩视频免费直播| 亚洲av无码乱码在线观看性色 | 亚洲欧美丝袜中文综合| 亚洲久久久久久久久久久| 国产中文在线| 啊v视频在线一区二区三区| 成人黄视频在线观看| 欧美夫妻性生活视频| 黄网站在线观| 欧洲成人性视频| 日本精品裸体写真集在线观看| 国产精品日韩在线播放| 老司机亚洲精品一区二区| 999视频在线免费观看| 欧美亚视频在线中文字幕免费| 欧美日韩国产精品一区二区| 青青一区二区三区| 久久久久久av无码免费网站下载| 亚洲理论在线| 九色91popny| 国产精品一级在线| 免费a在线观看播放| 日本一区二区三区国色天香| 永久免费看片视频教学| 婷婷久久综合九色综合绿巨人| 无码免费一区二区三区| 91精品国产综合久久久久久久久久| 国产黄色av网站| 亚洲男人的天堂在线播放| jizz在线免费观看| 久久久久久久国产精品视频| 黑人巨大精品| 亚洲综合大片69999| 国产精品欧美大片| 视频一区在线免费观看| 欧美先锋影音| 亚洲第一中文av| 国产成人鲁色资源国产91色综| 成人片黄网站色大片免费毛片| 最新不卡av在线| 青青青国产在线| 日韩一级大片在线观看| 麻豆影视在线| 欧美乱妇40p| 99re66热这里只有精品4| 9a蜜桃久久久久久免费| 国内精品久久久久久久影视简单| 日韩久久久久久久久久久久| 三级一区在线视频先锋| 中文字幕18页| 一区二区中文字幕在线| 久久中文字幕免费| 欧美α欧美αv大片| av在线播放av| 欧美专区日韩视频| 牛牛视频精品一区二区不卡| 日本免费在线视频观看| 久久久蜜桃一区二区人| 美女搡bbb又爽又猛又黄www| 国产精品久久一卡二卡| 麻豆精品久久久久久久99蜜桃| 精品成人一区二区三区| 国产成人高清精品| 国产精品视频久| 国产精品一区二区av日韩在线| 蜜臀av色欲a片无码精品一区 | 69xxx免费视频| 亚洲国产成人一区二区三区| www欧美在线| 亚洲国产精品国自产拍av秋霞| www.在线视频| 成人在线激情视频| 99久久精品费精品国产风间由美 | 国产老女人精品毛片久久| 永久免费av无码网站性色av| 一本在线高清不卡dvd| 性感美女福利视频| 97视频在线看| 国产精品巨作av| 日韩精品 欧美| 成人天堂资源www在线| 久久精品免费av| 欧美成人video| 色屁屁www国产馆在线观看| 成人免费网站在线看| 日韩一区欧美| 国产精品嫩草影院8vv8| 中文字幕日韩av资源站| 在线视频 中文字幕| 俺去了亚洲欧美日韩| 在线免费观看亚洲| 2021国产视频| 成人丝袜18视频在线观看| 国产精品99re| 日韩av在线最新| sis001欧美| 日韩经典在线视频| 毛片av一区二区| 亚洲一级生活片| 精品盗摄一区二区三区| 黑森林国产精品av| 秋霞久久久久久一区二区| 日韩成人精品视频| www.97视频| 日韩欧美在线网站| 91探花在线观看| 久久精品国产精品国产精品污 | 国产精品密蕾丝视频下载| 欧美精品无码一区二区三区| 中文字幕av免费专区久久| 一级片视频免费| 欧美高跟鞋交xxxxxhd| 清纯唯美亚洲经典中文字幕| 久久婷婷国产91天堂综合精品| 中文字幕日本乱码精品影院| 亚洲成人一级片| 欧美又大又硬又粗bbbbb| 青草国产精品| 99免费观看视频| 黄色成人av网| yw视频在线观看| 97久久精品午夜一区二区| 一区二区三区福利| 国产精品久久久视频| 日韩欧美不卡一区| 亚洲天堂一区二区| 四虎精品欧美一区二区免费| www.亚洲在线| 欧美性受xxx黑人xyx性爽| 欧美精品在线第一页| 亚洲区小说区| 色偷偷中文字幕| 日本韩国欧美一区二区三区| 羞羞的视频在线看| 欧美午夜精品久久久久免费视| 国产一区二区三区在线观看免费视频 | 中文字幕xxxx|