• 建置專案與環境參數設定

Build 與 Environment

build 可將 Angular 專案打包,之後可以佈署到 server 上,而 environment 是用來設定一些 Angular 會用到的參數,例如: 開發時的 host 是 http://dev/ , production host 是 http://prod/ ,就可以將參數寫在 environment.ts。

environmentenvironment

比較 Dev Build 與 Prod Build:

說明 ng build ng build --prod
使用的 Environment 檔案
environment.ts environment.prod.ts
不要讓檔案被 Cache (Cache-busting) 只有 css 檔案參考到的圖檔 所有檔案
Source maps 建立 不建立
Extracted CSS global CSS output to .js yes, to css files
醜化 (Uglification)
移除沒用到的程式碼 (Tree-Shaking)
Ahead of time compilation AOT
Bundling

dev ng build 參數設定小技巧

這四行執行結果都一樣

ng build --target=development --environment=dev
ng build --dev -e=dev
ng build --dev
ng build

prod ng build 參數設定小技巧

這三行執行結果都一樣

ng build --target=production --environment=prod
ng build --prod -e=prod
ng build --prod

ng build 其他參數設定

參數 別名 說明
--sourcemap -sm 建立 source map
--aot Ahead of Time compilation
--watch -w 監控程式碼變成,並重新 build

輸出 Build Bundles 說明

專案 build 之後,會將專案用到的 js bundle 起來,每一個 bundle js 都有自己的職責。

js 檔案 說明
inline.bundle.js WebPack runtime,應用程式拿來用來讀取 module 用
main.bundle.js 我們寫的程式碼
polyfills.bundle.js 用來支援不同的瀏覽器
styles.bundle.js 紀錄 styles 被放在哪裡
vendor.bundle.js 包含 Angular 和其他 third-party 檔案

啟動 webpack-dev-server

ng serve

設定參數說明:

參數 別名 說明
--open -o ng serve 後,開啟網頁
--port -p 指定 port 號
--live-reload -lr 檔案發生變更後,是否直接重新整理瀏覽器 (-lr true or false)
--ssl 使用 https
--proxy-config -pc Proxy configuration file
--prod 啟動時 server,使用 --prod 的設定

停掉 Angular CLI , 使用 webpack 控制專案

這個功能可讓懂前端開發工具的人,能夠有更多靈活的應用。

ng eject


執行指令後 Angular CLI 的功能都將會無法使用,例如 ng build, ng serve 等等…。

webpack.config.js會被加入專案中,必且可以比較 package.json 改變的內容,會看到所有控制都交由原生的前端工具來執行。

packagepackage