[Angular] ng build 並壓縮檔案
在佈署 Angular 專案的時候為了能夠快速複製到遠端主機上,所以通常會 ng build
後,將 build 出來的檔案壓縮,要完成這一連串的流程,通常都是寫 cmd 來處理。
使用 PowerShell 壓縮資料夾
命令提示字元預設是沒有將資料夾壓縮的功能,所以我這邊使用 PowerShell 幫我處理壓縮檔案。
- 建立 zip.ps1 檔案
- 貼上底下的程式碼。 記得修改$source與$destination的路徑
zip.ps1 - ps1
1
2
3
4
5$source = "D:\Projects\Publish\Today_Deploy"
$destination = "D:\Projects\Publish\Today_Deploy.zip"
If(Test-path $destination) {Remove-item $destination}
Add-Type -assembly "system.io.compression.filesystem"
[io.compression.zipfile]::CreateFromDirectory($source,$destination)
之後命令提示字元只要使用 PowerShell 呼叫這個 script 檔案,就可以將檔案壓縮。Powershell.exe -executionpolicy remotesigned -File D:\Projects\zip.ps1
結合 ng build 與壓縮指令
建立一個 deploy.bat 檔案,貼上底下的指令
- 將路徑指定到 Angular 的根目錄
- 執行 ng build 並將輸出到 F2E 資料夾
- 執行壓縮
- bat
1 | cd /d D:\Projects\Trapac_Web_Payment\TraPacWebPayment.F2EWeb |
結果:事情不會這麼順利的 !!!!
拆成 3 個 bat,讓後續指令能繼續進行
建立 build.bat 貼上前 2 行指令
build.bat - bat
1
2
3cd /d D:\Projects\Trapac_Web_Payment\TraPacWebPayment.F2EWeb
ng build --prod --output-path=D:\Projects\Publish\Today_Deploy\F2E建立 zip.bat 貼上第 3 行指令
zip.bat - bat
1
Powershell.exe -executionpolicy remotesigned -File D:\Projects\zip.ps1
修改 deploy.bat ,呼叫 build.bat 與 zip.bat
deploy.bat - bat
1
2
3call D:\Projects\build.bat
call D:\Projects\zip.bat執行 deploy.bat,用這種方式,就順利讓
ng build
之後還可以持續執行指令
小結
目前就自己研究出這種方式,可以讓 ng build
後,可持續執行後面的指令,如果讀者還有更好的方式,歡迎告知。