TypeScript 后端開發中的熱重載編譯處理

在一些除了nest框架外的一些其他nodejs框架中沒有提供對ts編譯和熱重載,如果使用typescript我們需要自己進行配置。

方法一(推薦)

使用bun運行環境(快)。注:一些不是使用js,ts代碼編寫的第三方包,可能會有兼容性問題。

bun run --hot index.ts

構建為js代碼?

bun build index.ts --target node --outdir ./dist

編譯成可執行文件

bun build --compile --minify index.ts --outfile ./dist/web

方法二(推薦)

使用deno運行環境(安全)?。deno2.x和bun有同樣兼容性問題,deno1.x兼容性更差。

deno run --allow-net --watch ./src/index.ts 

?編譯成可執行文件

deno compile --output ./dist/app --allow-net --allow-read ./src/index.ts

?方法三(推薦)

使用 ts-node-dev,npm i ts-node-dev安裝。

ts-node-dev --respawn --transpile-only src/index.ts

方法四?

使用tsc配置增量編譯,配合concurrently?實現。

tsconfig.json

{"compilerOptions": {"target": "es2016", // 輸出目標 JavaScript 版本"module": "CommonJS", // 使用 ES 模塊"experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */"emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */"lib": ["ES2016","DOM"],"moduleResolution": "node", // 使用 Node.js 模塊解析策略"outDir": "./dist", // 輸出目錄"rootDir": "./src/", // TypeScript 源代碼目錄"baseUrl": "./", // 設置模塊解析的基本路徑"resolveJsonModule": true, // 支持導入 JSON 文件// "emitDeclarationOnly": false, // 只生成聲明文件"allowJs": true, // 允許導入 JS 文件"checkJs": true,"sourceMap": true,"importHelpers": true,"allowSyntheticDefaultImports": true,"esModuleInterop": true, // 支持與 CommonJS 模塊互操作"strict": true, // 啟用嚴格模式"listEmittedFiles": true, // 打印輸出文件"listFiles": true,"declaration": false, "composite": false, // 啟用增量構建"incremental": true, // 啟用增量編譯"tsBuildInfoFile": "./.tsbuildinfo", // 增量編譯信息文件"skipLibCheck": true, // 跳過庫類型檢查"forceConsistentCasingInFileNames": true, // 強制文件名大小寫一致"paths": {"*": ["node_modules/*"] // 配置模塊路徑}},"include": ["src/**/*" // 包含所有 src 目錄下的文件],"exclude": ["node_modules" // 排除 node_modules 目錄]
}

package.json

"a": "concurrently \"npm run c\" \"npm run n\"",
"c": "tsc --watch",
"n": "nodemon --exec node ./dist/bin/www.js --watch ./src --ext ts --legacy-watch",

其它方法?

?也可以使用webpack、vite、gulp等一些構建工具實現,不是很推薦。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/64721.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64721.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64721.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

QT集成IntelRealSense雙目攝像頭3,3D顯示

前兩篇文章,介紹了如何繼承intel realsense相機和opengl。 這里介紹如何給深度數據和色彩數據一塊顯示到opengl里面。 首先,需要了解深度數據和彩色數據是如何存儲的。先說彩色數據。彩色圖像一般都是RGB,也就是每個像素有三個字節&#xf…

Postman[4] 環境設置

作用:不同的環境可以定義不同的參數,在運行請求時可以根據自己的需求選擇需要的環境 1.創建Environment 步驟: Environment-> ->命名->添加環境變量 2.使用Environment 步驟:Collection- >右上角選擇需要的環境

【合并區間】

問題 以數組 intervals 表示若干個區間的集合,其中單個區間為 intervals[i] [starti, endi] 。 請你合并所有重疊的區間,并返回 一個不重疊的區間數組,該數組需恰好覆蓋輸入中的所有區間 。示例 1: 輸入:intervals …

SpringBoot_第二天

SpringBoot_第二天 學習目標 Mybatis整合&數據訪問 使用SpringBoot開發企業項目時,持久層數據訪問是前端頁面數據展示的基礎,SpringBoot支持市面上常見的關系庫產品(Oracle,Mysql,SqlServer,DB2等)對應的相關持久層框架,當然除了對于關系…

SparseViT:基于稀疏編碼Transformer的非語義中心、參數高效的圖像篡改定位

摘要 https://arxiv.org/pdf/2412.14598 非語義特征或語義無關特征,與圖像上下文無關但對圖像篡改敏感,被認為是圖像篡改定位(IML)的重要證據。由于無法獲得人工標簽,現有工作依賴于手工方法提取非語義特征。手工非語…

Redisson 分布式鎖獲取tryLock和lock的區別

問題 boolean isLock lock.tryLock(10, 30, TimeUnit.SECONDS); boolean isLock lock.lock(30, TimeUnit.SECONDS); boolean isLock lock.lock(); 三者的區別?? 這三個方法都是用于獲取 Redisson 分布式鎖的,但它們在獲取鎖的方式和行為…

【git】git生成rsa公鑰的方法

git生成rsa公鑰的方法 一,簡介二,操作方法三,總結 一,簡介 在工作的過程中,經常需要生成rsa的密鑰,然后提供給別人,然后別人給你開通代碼下載權限。本文介紹如何在本地生成rsa的密鑰供參考。 …

Zookeeper模式安裝Kafka(含常規、容器兩種安裝方式)

一、#創作靈感# 公司使用Kafka的軟件項目較多,故寫技術筆記鞏固知識要點 二、軟件環境 - Kafka 3.9.0 官方下載地址:Kafka 3.9.0 - ZooKeeper 3.9.3 官方下載地址:ZooKeeper 3.9.3 - Docker Desktop 4.37 容器圖形化工具 官方下載地址…

7.傅里葉級數練習題

7.傅里葉級數練習題 設函數&#xff1a; f ( x ) { ? x , 0 ≤ x ≤ 1 2 , 2 ? 2 x , 1 2 < x < 1 , f(x) \begin{cases} -x, & 0 \leq x \leq \frac{1}{2}, \\ 2 - 2x, & \frac{1}{2} < x < 1, \end{cases} f(x){?x,2?2x,?0≤x≤21?,21?<x&…

【高項】信息系統項目管理師(二)項目管理概論

一、PMBOK的發展 項目管理知識體系&#xff08;PMBOK&#xff09;是由美國項目管理協會&#xff08;PMI&#xff09;開發的一套描述項目管理專業范圍的知識體系&#xff0c;包含了對項目管理所需的知識、技能和工具的描述。 二、項目基本要素 2.1 項目基礎 項目是為提供一項…

C++設計模式:狀態模式(自動售貨機)

什么是狀態模式&#xff1f; 狀態模式是一種行為型設計模式&#xff0c;它允許一個對象在其內部狀態發生改變時&#xff0c;動態改變其行為。通過將狀態相關的邏輯封裝到獨立的類中&#xff0c;狀態模式能夠將狀態管理與行為解耦&#xff0c;從而讓系統更加靈活和可維護。 通…

【Pytorch實用教程】循環神經網絡中使用dropout需要注意的問題

文章目錄 問題解答警告的具體含義解決方案示例代碼總結問題 UserWarning: dropout option adds dropout after all but last recurrent layer, so non-zero dropout expects num_layers greater than 1, but got dropout=0.3 and num_layers=1 warnings.warn("dropout op…

數據中臺與數據治理服務方案[50頁PPT]

本文概述了數據中臺與數據治理服務方案的核心要點。數據中臺作為政務服務數據化的核心&#xff0c;通過整合各部門業務系統數據&#xff0c;進行建模與加工&#xff0c;以新數據驅動政府管理效率提升與政務服務能力增強。數據治理則聚焦于解決整體架構問題&#xff0c;確保數據…

postgresq-自定義執行計劃(custom plan)與generic plan(通用執行計劃)

文章目錄 之前寫過一篇關于 PostgreSQL prepare sql的文章&#xff0c;但當時沒有提到generic plan(通用計劃)和custom plan(自定義計劃)這兩個概念。現在將通過舉例介紹這兩個概念。 創建測試表&#xff1a; postgres# create database demo; CREATE DATABASE postgres# \c d…

dockfile 配置 /etc/apt/source.list.d/debian.list 清華鏡像

docker:3.12.7 鏡像使用的是 debian 系統&#xff0c;比 ubuntu 更輕量。debian 系統內&#xff0c;apt 鏡像源列表位于 /etc/apt/source.list.d/debian.list&#xff08;作為對比&#xff0c;ubuntu 的鏡像列表位于 /etc/apt/source.list&#xff0c;二者語法相同&#xff09;…

程序員測試日常小工具

作為一名程序員&#xff0c;或者測試人員&#xff0c;日常工作最常用的工具有哪些&#xff0c;截圖&#xff0c;截圖漂浮&#xff0c;翻譯&#xff0c;日期處理&#xff0c;api調用...&#xff0c; 當你拿到一串報文后&#xff0c;想要json轉換時&#xff0c;是不是要打…

【MySQL高級】第1-4章

第1章 存儲過程 1.1 什么是存儲過程&#xff1f; 存儲過程可稱為過程化SQL語言&#xff0c;是在普通SQL語句的基礎上增加了編程語言的特點&#xff0c;把數據操作語句(DML)和查詢語句(DQL)組織在過程化代碼中&#xff0c;通過邏輯判斷、循環等操作實現復雜計算的程序語言。 換…

深入淺出:AWT事件監聽器及其應用

前言 在Java的GUI編程中&#xff0c;事件處理是非常重要的一環。AWT&#xff08;Abstract Window Toolkit&#xff09;框架提供了靈活的事件處理機制&#xff0c;使得開發者能夠響應用戶的操作&#xff0c;例如點擊按鈕、鍵盤輸入、鼠標點擊等。AWT的事件監聽器就是實現這一機…

【Rust自學】8.5. HashMap Pt.1:HashMap的定義、創建、合并與訪問

8.5.0. 本章內容 第八章主要講的是Rust中常見的集合。Rust中提供了很多集合類型的數據結構&#xff0c;這些集合可以包含很多值。但是第八章所講的集合與數組和元組有所不同。 第八章中的集合是存儲在堆內存上而非棧內存上的&#xff0c;這也意味著這些集合的數據大小無需在編…

混合合并兩個pdf文件

混合兩個pdf 1、在線免費交替和混合奇數和偶數PDF頁面2、有什么軟件把兩個 PDF 交叉合并&#xff1f;3、pdfsam本地合并 如何Google翻譯的原文和譯文合并&#xff0c;&#xff08;沉浸式翻譯效果相對較好&#xff09; 1、在線免費交替和混合奇數和偶數PDF頁面 https://deftpd…