您好,登錄后才能下訂單哦!
第一篇文章是: "使用angular cli生成angular5項目" :https://www.jb51.net/article/136621.htm
第二篇文章是: "使用angular cli從藍本生成代碼" :https://www.jb51.net/article/137031.htm
第三篇文章是: "使用Angular CLI生成路由" :https://www.jb51.net/article/137033.htm
Build.
Build主要會做以下動作:
ng build.
可以先看幫助:
ng build --help
針對開發環境, 就是用命令 ng build.
默認情況下, 它的輸出目錄在.angular-cli.json文件里ourDir屬性配置的, 默認是/dist目錄.
build之后會看見dist里面有這些文件:
可以使用source-map-explorer來分析依賴, 并且查看哪些模塊和類在bundle里面.
首先修改上一個例子中的代碼:
執行ng build:
可以看到生成了這些文件.
把dist里面的index.html格式化一下看看:
可以看到它引用了生成的5個js文件.
打開main.bundle.js可以看到我寫的代碼:
下面運行程序: ng serve -o:
可以看到在ng serve的時候, 加載了上述的文件.
因為ng build是開發時的build, 所以沒有做任何優化, 文件挺大的.
這時看一下文件目錄, 并沒有dist目錄:
那么這些文件是怎么被serve的呢?
這是因為, 這時候webpack是在內存中進行的serve.
下面使用source-map-explorer進行分析, 首先安裝它:
npm install --save-dev source-map-explorer
然后執行 ng build, 再執行:
.\node_modules\.bin\source-map-explorer dist\main.bundle.js
結果會生成這個圖形:
再看看vendor.bundle的情況:
.\node_modules\.bin\source-map-explorer dist\vendor.bundle.js
這里面東西就比較多了.
Build Targets和Environment.
Environment是指采用哪一個環境文件:
而Targets則是用來決定項目文件是如何被優化的.
看一下開發和生產build的對比.
ng build |
ng build --prod |
|
Environment |
environment.ts |
environment..prod.ts |
緩存 |
只緩存css里引用的圖片 |
所有build的文件 |
source maps |
生成 |
不生成 |
如何處理css |
全局css輸出到js文件 |
生成的是css文件 |
uglify |
不 |
是 |
Tree-Shaking |
不去掉無用代碼 |
去掉無用代碼 |
AOT |
不 |
是 |
Bundling打包 |
是 |
是 |
--build-optimizer |
否 |
是(和AOT以及Angular5) |
--named-chunks |
是 |
否 |
--output-hashing |
media |
所有 |
下面命令都是針對開發時的build, 它們的作用是一樣的:
ng build ng build --dev ng build --dev -e=dev ng build --target=development --environment=dev
下面則是生產build:
ng build --prod ng build --prod -e=prod ng build --target=production --environment=prod
其它常用的參數還有:
Production Build.
先使用--aot:
ng build --aot
使用aot之后可以看到 vendor.bundle的大小降了很多, 只有1.5m左右了.
執行aot會去掉一些程序執行不需要的代碼, 例如angular的compiler這時就不在build輸出的文件里了(可以使用source-map-explorer查看).
試試生產環境:
ng build --prod
可以看到所有的文件都非常小了, 并且沒有vendor了(因為prod下--build-optimizer起作用所以vendor沒有了, 但可以使用--vendor-chunk true給弄出來).
Serve.
ng serve. 已經一直在用了, 下面看看它常用的參數:
試試 --prod:
ng serve --prod
通過文件大小可以看出確實是prod build的.
ng eject.
為項目生成webpack配置和腳本.
執行該命令試試:
看看有哪些變化:
.angular-cli.json:
package.json:
命令腳本都變了
還多出來一個webpack.config.js文件:
為什么要這么做呢?
可以對項目更深入的配置....
這時運行程序就是 npm start了.
我還是把reject恢復回去吧, 使用git來恢復吧.
如果需要Serve 其他js/css/assets文件:
放在.angular-cli.json就行, 例如jquery就應該放在scripts里面.
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。