我有一个简单的应用程序,通过angular-cli
初始化。Angular2 CLI巨大的供应商捆绑:如何提高产品尺寸?
这显示一些相对于3条路线页面。我有3个组件。在这个页面中,我使用lodash和Angular2 Http模块来获取一些数据(使用Rxjs Observables,map和subscribe)。我用一个简单的ngFor显示这些元素。但是,尽管我的应用程序非常简单,但我得到了一个巨大的(在我看来)捆绑包和地图。我不讨论gzip版本,但是在gzip之前大小。这个问题只是一个普遍的建议问。
一些测试结果:
纳克建立
哈希:8efac7d6208adb8641c1时间:10129ms块{0} main.bundle.js, main.bundle.map(主)18.7 KB {3} [初始] [渲染]
块{1} styles.bundle.css,styles.bundle.map,styles.bundle.map (样式)155 KB {4} [初始] [渲染]
块{2} scripts.bundle.js,scripts.bundle.map(脚本)128 kB的 {4} [初始] [渲染]
块{3} vendor.bundle.js,vendor.bundle.map(供应商)3.96 MB [初始] [渲染]
块{4} inline.bundle.js,inline.bundle.map(内联)0字节 [条目] [渲染]
等待:10Mb的供应商束打包这样一个简单的应用程序?
纳克构建--prod
哈希:09a5f095e33b2980e7cc时间:23455ms块{0} main.6273b0f04a07a1c2ad6c.bundle.js, main.6273b0f04a07a1c2ad6c.bundle.map(主)18.3 KB {3- } [初始] [渲染]
块{1} styles.bfdaa4d8a4eb2d0cb019.bundle.css, styles.bfdaa4d8a4eb2d0cb019.bundle.map, styles.bfdaa4d8a4eb2d0cb019.bundle.map(样式)154 KB {4} [初始] [呈现]
块{2} scripts.c5b720a078e5464ec211.bundle.js, scripts.c5b720a078e5464ec211.bundle.map(脚本)128 kB的{4} [初始] [渲染]
块{3} vendor.07af2467307e17d85438 .bundle.js, vendor.07af2467307e17d85438.bundle.map(供应商)3.96 MB [初始] [渲染]
块{4} inline.a345391d459797f81820.bundle.js, inline.a345391d459797f81820.bundle.map(内联)0字节[条目] [呈现]
再次等待:这样一个类似的供应商捆绑大小prod?
ng build --prod --aot
哈希:517e4425ff872bbe3e5b时间:22856ms块{0} main.95eadabace554e3c2b43.bundle.js, main.95eadabace554e3c2b43.bundle.map(主)130 KB {3} [初始] [渲染]
块{1} styles.e53a388ae1dd2b7f5434.bundle.css, styles.e53a388ae1dd2b7f5434.bundle.map, styles.e53a388ae1dd2b7f5434.bundle.map(样式)154 KB {4} [初始] [渲染]
块{2} scripts.e5c2c90547f3168a7564.bundle.js, scripts.e5c2c90547f3168a7564.bundle.map(脚本)128 kB的{4} [初始] [渲染]
块{3} vendor.41a6c1f57136df286f14。 bundle.js, vendor.41a6c1f57136df286f14.bundle.map(供应商)2.75 MB [初始] [渲染]
块{4} inline.97c0403c57a46c6a7920.bundle.js, inline.97c0403c57a46c6a7920.bundle.map(内联)0字节[条目] [呈现]
ng build --aot
哈希:040cc91df4df5ffc3c3f时间:11011ms块{0} main.bundle.js, main.bundle.map(主)130 KB {3} [初始] [渲染]
块{ 1} styles.bundle.css,styles.bundle.map,styles.bundle.map (样式)155 KB {4} [初始] [渲染]
块{2} scripts.bundle.js,脚本。 bundle.map(scripts)128 kB {4} [initial] [rendered]
chunk {3} vendor.bundle.js,vendor.bundle.map(vendor)2.75 MB [initial] [rendered]
chunk {4} inline.bundle.js,inline.bundle.map(inline) 0字节 [进入] [渲染]
那么几对PROD部署我的应用程序的问题:
- 为什么厂商捆绑了如此巨大?
- 是否正确地使用angular-cli树?
- 如何提高这个包的大小?
- 需要.map文件吗?
- 包中是否包含测试功能?我不需要他们的产品。
- 通用问题:推荐工具包装什么?也许angular-cli(在后台使用webpack)不是最合适的吗?我能做更多吗?
我搜索了很多堆栈溢出的讨论,但我没有找到任何通用的问题。
要了解更多有关角2应用程序的优化,看看这个:https://github.com/mgechev/angular-performance-checklist#introduction – Timathon
但我不认为我们应该在乎这个,角色cli将会发展,事情会变得越来越好。如果你需要一些angular-cli没有的功能,只需在他们的repo中提交一个问题:https://github.com/angular/angular-cli – Timathon
而我认为@Timathon在某些方面是正确的,如果有人试图将Angular2部署到生产环境中,他们*应该关心软件包大小,因为这会直接影响应用程序的性能。角度性能检查表是查看可以改进的一个很好的资源。有角度的团队正在努力减少捆绑尺寸。兴奋地看到它去了哪里! –