目錄
3. Angular網站的發布
4. 總結
首頁 web前端 js教程 淺談Angular如何編譯打包?如何使用Docker發布?

淺談Angular如何編譯打包?如何使用Docker發布?

Jun 07, 2021 am 11:08 AM
angular

本篇文章跟大家介紹一下Angular編譯打包&Docker發布的方法。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

淺談Angular如何編譯打包?如何使用Docker發布?

環境:

  • Angular CLI: 11.0.6
  • Angular: 11.0.7
  • Node: 12.18.3
  • npm : 6.14.6
  • IDE: Visual Studio Code

##1. 摘要

當我們完成angular的開發後,如何部署到伺服器呢? 【相關教學推薦:《

angular教學》】

2. 編譯打包

2.1. 基本打包指令

基於Angular CLI產生的Angular項目,預設會有2個環境設定檔

└──myProject/src/environments/
               └──environment.ts
               └──environment.prod.ts
登入後複製

  • environment.ts: 針對開發環境所使用的環境檔案

  • environment.prod.ts: 生產環境編譯時,會取代原有的environment.ts,然後再打包。 (根目錄下的angular.json定義了這個預設行為,有需要,可以進行修改)

#AngularCLI剛剛產生2個檔案後,如果開啟比較2個檔案的區別,可以看到開發環境使用的environment.ts檔案中,有這麼一句

production: false。因為,針對生產環境,angular在編譯時需要核心考慮效率等問題,而開發環境,要考慮方便開發者進行調試,重點不同。

那麼針對生產環境如何編譯呢? Angular CLI同樣提供了指令,

ng build --prod
登入後複製

其中,參數

--prod 即告訴編譯環境,編譯為生產環境套件。同樣,angular.json中定義了預設的編譯參數,如果需要,可以進行修改。主要設定參數如下

"configurations": {
    "production": {
        "fileReplacements": [
        {
            "replace": "src/environments/environment.ts",
            "with": "src/environments/environment.prod.ts"
        }
        ],
        "optimization": true,
        "outputHashing": "all",
        "sourceMap": false,
        "extractCss": true,
        "namedChunks": false,
        "aot": false,
        "extractLicenses": true,
        "vendorChunk": false,
        "buildOptimizer": false,
        "budgets": [
        {
            "type": "initial",
            "maximumWarning": "5mb",
            "maximumError": "10mb"
        }
        ]
    }
}
登入後複製

Angular預設打包到根目錄下的

dist目錄下,產生的檔案為純靜態檔案(html, css, js),以及圖片檔案。

2.2. 打包部署到二級目錄

#有不少情況,我們的angular web網站不能直接部署到網站的根目錄下,需要部署到二級目錄下。例如,不能部署到 http://abc.com下,要求部署到 http://abc.com/demo 這個二級目錄下。針對這種情況,就需要修改一下我們的編譯參數,修改為:

ng build --prod --deploy-url /demo/ --base-href /demo/
登入後複製

增加

--deploy-url--base-href

使用場景:例如我們有多個站點,希望使用同一個反向代理,

http://site1, http://site2 , 分別對應http://abc.com/site1, http://abc.com/site2/。那麼為了方便配置,就需要把site1, site2都部署到二級目錄,如http://site1/site1, http://site2/site2。然後http://site1/site1代理程式到http://abc.com/site1, http://site2/site2代理程式到 http://abc.com/site2/, 免得css、js因為目錄層級問題找不到。

3. Angular網站的發布

Angular網站編譯打包後,可以方便的發佈到已有web伺服器,或者打成docker image, 然後發布。

3.1. web伺服器發布

因為我們打包後,產生的檔案為純靜態檔案(html, css, js, 圖片等), 所以打包後的問題,可以直接copy到iis, nginx , apache tomcat等web伺服器,或node.js, java等可以顯示靜態檔案的程式的目錄下即可。

3.2. 使用docker發布

如果部署到docker,我們可以基於一個基礎的nginx docker, 然後把編譯好的angular項目,copy到docker 內的nginx目錄下即可。

基本步驟:

  • 準備Dockerfile 文件,docker可以基於

    nginx:alpine, 將編譯好的angular 網站檔案複製到docker 的nginx預設目錄/usr/share/nginx/html

  • FROM nginx:alpine
    COPY . /usr/share/nginx/html
    登入後複製
說明: 1) 假設angular打包後的文件,與Dockerfile檔案在同一個目錄

2) COPY . /usr/share/nginx/html, 兩個參數
. 代表目前路徑, /usr/share/nginx/html是docker中的目標目錄

  • 編譯docker。在Dockerfile目錄下,執行

  • docker build -t your-docker-name .
    docker save your-docker-name > your-docker-name.tar
    gzip your-docker-name.tar
    登入後複製
    三條指令分別為:

    • 產生docker image, 名字(name)為your-docker-name
    • 匯出docker image為本地文件, 文件名稱為your-docker-name.tar
    • #壓縮docker image

    可以看到,因為angular編譯後為純靜態文件,所以使用docker發布非常簡單。部署時,只需要複製docker檔案到目標機器,解壓縮,然後執行 docker load < your-docker-name.tar 即可載入docker image到目標機器。

    4. 總結

    • 為生產環境編譯,一定要加參數--prod

    • #如果要部署到二級目錄,編譯時加參數。如部署到/demo二級目錄下,加參數: --deploy-url /demo/ --base-href /demo/

    • 使用docker發布,可以選擇基本的nginx docker, 然後將編譯好的angular檔copy到nginx目錄下即可。

    更多程式相關知識,請造訪:程式設計影片! !

    以上是淺談Angular如何編譯打包?如何使用Docker發布?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

聊聊Angular中的元資料(Metadata)和裝飾器(Decorator) 聊聊Angular中的元資料(Metadata)和裝飾器(Decorator) Feb 28, 2022 am 11:10 AM

這篇文章繼續Angular的學習,帶大家了解Angular中的元數據和裝飾器,簡單了解一下他們的用法,希望對大家有幫助!

如何在Ubuntu 24.04上安裝Angular 如何在Ubuntu 24.04上安裝Angular Mar 23, 2024 pm 12:20 PM

Angular.js是一種可自由存取的JavaScript平台,用於建立動態應用程式。它允許您透過擴展HTML的語法作為模板語言,以快速、清晰地表示應用程式的各個方面。 Angular.js提供了一系列工具,可協助您編寫、更新和測試程式碼。此外,它還提供了許多功能,如路由和表單管理。本指南將討論在Ubuntu24上安裝Angular的方法。首先,您需要安裝Node.js。 Node.js是一個基於ChromeV8引擎的JavaScript運行環境,可讓您在伺服器端執行JavaScript程式碼。要在Ub

一文探究Angular中的服務端渲染(SSR) 一文探究Angular中的服務端渲染(SSR) Dec 27, 2022 pm 07:24 PM

你知道 Angular Universal 嗎?可以幫助網站提供更好的 SEO 支援哦!

angular學習之詳解狀態管理器NgRx angular學習之詳解狀態管理器NgRx May 25, 2022 am 11:01 AM

這篇文章帶大家深入了解angular的狀態管理器NgRx,介紹一下NgRx的使用方法,希望對大家有幫助!

Angular + NG-ZORRO快速開發一個後台系統 Angular + NG-ZORRO快速開發一個後台系統 Apr 21, 2022 am 10:45 AM

這篇文章跟大家分享一個Angular實戰,了解一下angualr 結合 ng-zorro 如何快速開發一個後台系統,希望對大家有幫助!

淺析angular中怎麼使用monaco-editor 淺析angular中怎麼使用monaco-editor Oct 17, 2022 pm 08:04 PM

angular中怎麼使用monaco-editor?以下這篇文章記錄下最近的一次業務中用到的 m​​onaco-editor 在 angular 中的使用,希望對大家有幫助!

如何使用PHP和Angular進行前端開發 如何使用PHP和Angular進行前端開發 May 11, 2023 pm 04:04 PM

隨著網路的快速發展,前端開發技術也不斷改進與迭代。 PHP和Angular是兩種廣泛應用於前端開發的技術。 PHP是一種伺服器端腳本語言,可以處理表單、產生動態頁面和管理存取權限等任務。而Angular是一種JavaScript的框架,可以用來開發單一頁面應用程式和建構元件化的網頁應用程式。本篇文章將介紹如何使用PHP和Angular進行前端開發,以及如何將它們

淺析Angular中的獨立組件,看看怎麼使用 淺析Angular中的獨立組件,看看怎麼使用 Jun 23, 2022 pm 03:49 PM

這篇文章帶大家了解Angular中的獨立元件,看看怎麼在Angular中建立一個獨立元件,怎麼在獨立元件中導入已有的模組,希望對大家有幫助!

See all articles