怎麼正確快速的部署一個TS Node.js專案?以下這篇文章就來教大家怎麼在幾分鐘內部署一個TS Node.js應用,希望對大家有幫助!
作為全端開發者,創建專案是很有趣的,可以設計架構,頭腦風暴,開發,但在開發結束之後呢,我們就要部署或發布應用。那麼如何正確快速的部署一個TS Node.js專案呢,今天我們來搞定它。 【推薦學習:《nodejs 教學》】
建立一個TS Node.js應用程式
如果你已經熟悉創建TS Node.js項目,可以直接跳到「部署發布應用程式」部分
初始化Node.js專案:
在我們團隊,我們非常喜歡TS,並且在我們的所有新專案中都會使用TS,因此建立TS專案並不新鮮。
讓我們從最基本的開始:
npm init
初始化一個Node.js項目,使用-y
參數可以快速跳過一步一步的設定npm install express @types/express
安裝express依賴,和用於TS開發的express的types類型檔案npm install typescript --save-dev
安裝typescript作為開發依賴
mkdir my-app && cd my-app npm init -y npm install express @types/express --save npm install typescript --save-dev
TS配置
-
npx tsc --init
將建立一個typescript預設設定檔tsconfig.json -
declaration
用於指定是否在編譯完成後產生相應的*.d.ts文件,預設為false -
outdir
定義TS編譯後的目錄,如果沒有聲明,預設編譯後的文件位置將和ts原始文件在相同位置
執行指令
npx tsc --init
修改下列設定
"compilerOptions": { ... "outDir": "dist", // 编译后输出目录 "declaration": true // 生成 d.ts }
建立專案入口檔案
建立server.ts
檔案
import express from 'express' const app = express() const PORT = 3000 app.use(express.json()) app.get('/', (req, res) => { res.send(‘Hello World!’) }) app.listen(PORT, () => { console.log(`Server is listening on port ${PORT}`) })
完成上述步驟後,我們的檔案目錄結構如下
. ├── node_modules ├── package-lock.json ├── package.json ├── server.ts └── tsconfig.json
編譯TS
##我們下一步是建置和部署我們的TS Node.js應用,由於在生產環境中,我們不運行TS版本,而是運行編譯後的JS。下面我們來編譯專案修改package.json檔案增加以下指令#npm run tsc
將會根據我們tsconfig.json的設定編譯我們的項目,並輸出到指定目錄
npm run start:prod
將會執行我們編譯後的JS檔
"scripts": { "tsc": "tsc", "start:prod": "node dist/server.js" }然後在本地進行測試
npm run tsc npm run start:prod # 服务启动成功,运行端口:3000透過瀏覽器存取http://localhost:3000/,存取成功,接下來我們部署和發布我們的應用程式
部署發布應用程式
這裡我們主要採用兩種方法將編譯後的TS專案分發部署到各種環境中- npm依賴套件的形式
- docker容器方式
NPM依賴套件的形式
NPM生命週期鉤子
一些特殊的生命週期鉤子會在觸發指定操作時被觸發,這裡我們將使用「prepare」鉤子,該狗子會在執行npm publish指令發佈到NPM之前被觸發一次。所以我們可以這時編譯的TS應用。指定發布文件
透過「files」欄位我們可以去定義發布NPM包時應該包括哪些文件,如果省略該屬性預設會為["*" ],會上傳所有檔案。 下面是修改後的package.json"name": "my-app-xiaoshuai", // 我们发布到NPM上的名字 "main": "dist/server.js", // 修改入口文件地址 "types": "dist/server.d.ts", // 指定TS类型文件 "files": [ "dist", "package.json", "package-lock.json", "README.md" ], "scripts": { "tsc": "tsc", "prepare": "npm run tsc" // 编辑typescript }
npm publish
在修改完package.json設定後,我們執行npm publish指令,將我們的應用程式發佈到NPM上去npm publish輸出
my-app- xiaoshuai套件
Docker容器方式
要將我們的TS Node.js應用程式作為容器發布,我們要在專案根目錄中建立docker設定檔Dockerfile。 下面我們一步一步寫Dockerfile檔案- 拷貝編譯後的檔案到容器內
- 拷貝package.json和package-lock.json到容器內
- 使用
npm install
安裝依賴
- 使用
node build/ server.js
運行我們的應用程式
# Node 版本 FROM node:14.18.0-alpine ARG NODE_ENV=production ENV NODE_ENV $NODE_ENV COPY ./dist /dist COPY ./package.json /package.json COPY ./package-lock.json /package-lock.json RUN NODE_ENV=$NODE_ENV npm install EXPOSE 3000 CMD ["node", "dist/server.js"]
现在我们可以在根目录中构建docker镜像,运行 docker build --tag my-app:test .
命令
docker build --tag my-app:test .
成功后输出如下
接着我们运行容器,使用docker run -p 3000:3000 -it my-app:test
命令来运行我们的应用,可以看到程序成功运行在3000端口
docker run -p 3000:3000 -it my-app:test # 服务启动成功,运行端口:3000
通过浏览器访问http://localhost:3000/,访问成功
源码
https://github.com/cmdfas/ts-node-express-deploy
总结
今天我们介绍了创建TS Node.js项目和部署它的基础知识,希望对大家有所帮助,能够用在现在或未来的项目中。
更多编程相关知识,请访问:编程视频!!
以上是手把手教你怎麼正確快速的部署一個TS Node.js專案!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。1.Python以简洁语法和丰富库生态著称,适用于数据分析和Web开发。2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具