给ASP.NET Core Web发布包做减法
<h1 id="引言">1.引言 紧接上篇:。这一节我们来讲讲如何优化ASP.NET Core Web发布包繁重的问题。 在ASP.NET Core Web App中我们可以通过Bower或NPM来安装一些JS、CSS插件,来方便我们组织前端组件。但是这也给我带来了一个问题,那就是发布时需要把安装的Bower包或NPM包都要打包上传到服务器。 如果现在发布ASP.NET Core Web App,wwwroot下已包含到项目中的文件都会被发布。虽然我们可以使用捆绑和微小的技术对js、css进行压缩来减少网页大小来提升加载速度。但是,我们发布包的大小却不能减少。 如果我们项目中引用了较少的前端包文件,也无可厚非。但当我们引用了较多的包文件时。那我们的发布包将会占用很大一部分空间。尤其是当我们进行CI/CD时,将会耗费大量的时间来进行包还原和包文件上传。 我们就以集成AdminLte的ASP.NET Core Mvc项目为例,看看发布的包大小究竟有多大。 从上图我们看到发布后wwwroot/plugins文件夹就占了很大一部分空间。而wwwroot/plugins中就是安装的Bower包。 那这些Bower包中的文件我们都有用到吗?显然没有。我们就顶多引用了个js和css文件而已。到这里,减负的思路我们就清晰了。剔除ASP.NET Core Web中未引用的Bower包文件,把没有引用到的文件删除不就得了?! 但是你随便打开一个Bower包文件夹,你就不想这么做了,一个一个删要删到什么时候。而且如果直接去删除Bower包中无用的文件,可能会影响bower包的管理,比如bower包的升级降级。 不卖关子了,思路如下:
你可能会说,这么复杂啊,还不如我一个一个删除啊。别怕,我们让这一切自动化。而这个自动化工具就是。 以我们之前的为例。
安装成功后会在项目根目录创建package-lock.json文件和node_components文件夹。
代码注释的很详细,就不过多赘述了。有一点需要解释下,为什么需要完整拷贝bootstrap和font-awesome呢?因为引用的font-awesome.min.css会引用包文件的一些字体文件等,为了省事,就把包全部拷贝了一遍。而一般绝大多数包都是简单拷贝css和js文件就ok了的。而至于什么时候拷贝文件,什么时候文件夹。很简单,默认先拷贝文件,运行项目,然后浏览器F12,如果发现有无法加载的error,那就是了。
重新发布,我们可以发现发布的包大小已有40M减小到8M。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 如何测试ASP.NET MVC 3中的RenderSection中
- asp.net-mvc – 是否可以在IIS服务器上部署asp.net mvc项目
- 有没有办法检查WebResponse而不影响.NET中的底层响应流?
- asp.net-mvc – 路由参数,自定义模型绑定器还是动作过滤器?
- asp.net-mvc – 工作单元,存储库,注入,使用块
- asp.net-mvc – ASP.NET MVC – HtmlHelper和Session数据
- asp.net-mvc – ASP.NET MVC 3从同一表单保存和编辑
- 使用FormsAuthentication.SetAuthCookie(用户名,false)后,f
- asp.net-mvc – 调用SaveChanges()时从更新中排除属性
- asp.net-mvc – MVC – 强类型视图被破坏
- asp.net-mvc – 重定向页面的TempData?
- asp.net – 我需要html编码标题属性(工具提示)吗
- .NET Core采用的全新配置系统[7]: 将配置保存在数
- asp.net – 使用itemtemplate动态地将列添加到Gr
- ASP.NET:编译器失败,错误代码为-532462766
- asp.net-mvc-4 – 在主机上找不到Clearscript文件
- ASP.NET MVC 实现简单的登录
- asp.net – 在button和asp之间的区别:button on
- asp.net-mvc – ASP.NET MVC – 执行控制器操作而
- ASP.NET MVC:如果url与当前url匹配,则将选定的C