时间:2021-05-28
webpack-ng-dll-plugin
用途
使用
第一个是官方的,后两个是第三方的,但是确认你有练过之前,请不要选择官方的...
作者在测试的时候选择的是@angular-builders/custom-webpack
引用就是webpack的正常引用插件就ok了
尝鲜
下面的函数过滤了index.html,styles,polyfills,License的输出,并且禁用了runtimeChunk
setNgDllPlugin( config, { //webpack 的out相关配置 output: { filename: 'dll.js', }, ngDllPluginOptions: { // dll的资源清单导出配置 path: path.join(__dirname, 'dist', 'manifest.json'), name: 'TLIB', format: true, filter: { // 过滤模式,full全量,auto相对于项目,manual 手动指定过滤项(需要设置map) mode: 'auto', }, }, }, options );自定义
相关配置需要参考(暂时没写文档,需要查看源码)
config.plugins.push(new NgDllPlugin(option.ngDllPluginOptions));引用
// 这里的context可以理解为代码(应用代码)相对于哪个文件夹解析(不是打包出来的dll.js,如果正确引用,你会发现把dll.js删掉,也不会影响打包),如果发现打包出来的东西没有使用这个,应该就是这个配置错了 config.plugins.push( new webpack.DllReferencePlugin({ context: path.resolve(__dirname), manifest: require('./dist/manifest.json'), }) );演示地址
https://github.com/wszgrcy/ng-cli-plugin-demo
可能解锁的技术
正常情况下,哪怕是动态加载的路由,也是与项目一同打包,只不过是打包为两个文件
主体项目先打包,然后再单独开发懒加载路由模块
虽然ng已经实现了这个,但是由于每次一大包,就相当于打了一个单独项目,非常庞大,使用dll后则会缩小到一个可怕的程度,副作用接近0
目前(可能)存在的问题
没修改之一主要是影响不大,加上调试需要
dll在设计的时候根本没考虑过动态模块之类的东西,完全就是只打一个大包
尽量使用空项目生成dll
其实如果项目代码足够多(各种种类),修改代码是不影响的,但是比如有些引入第一次使用,或者html模板中使用了一些新的东西,都需要重新构建
待改进
主动排除一部分永远无法使用的导出
为什么dll比直接打包大
目前用空项目生成出的dll(包括rxjs,router,common,core),全量暴力是440k(也就是说当其他包使用时这些文件都会在dll中查找),选择性导出最小化启动在216k作用,最终估计应该平均在300k左右
后期,其实可以整理一个永不导出的列表,进行排除,从而减小体积
总结
到此这篇关于angular共享依赖解决方案的文章就介绍到这了,更多相关angular共享依赖解决内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
angular应用部署在iis上,刷新出现404解决方案:安装iisURLRewrite模块,配置urlrewrite如下:在src目录下增加web.confi
本文基于上一篇Angular5的文章继续进行开发,上文中讲了搭建Angular5有道翻译的过程,以及遇到问题的解决方案。随后改了UI,从bootstrap4改到
近日,不少企业咨询我怎样写网站建设解决方案,究竟怎样策划自己公司的网站建设解决方案。我认为,要撰写网站建设解决方案,首先要先了解什么是网站建设解决方案?网站建设
使用版本dedecms5.6 在论坛里面找好好久怎么都找不到解决方案…… 不过,经过长时间的摸索,终于找到了解决方案,供大家分享
共享充电宝丢失后需要联系客服,把丢失的情况跟客服说明,按丢失的情况处理。 深圳街电科技有限公司提供移动充电解决方案街电。街电是一种全新的移动充电解决方案。在合