加快你的前端构建时间的最佳实践
今天,使用CI/CD工具是网络应用程序开发的一个必要条件。作为关键开发路径的一部分,加快我们的构建系统对于提高开发人员的生产力至关重要。
因此,在这篇文章中,我们将带你了解四种不同的策略,用CI/CD优化前端构建时间。
1.使用并行Web包
Parallel-Webpack允许你并行地运行你的应用程序构建,帮助大大减少构建时间。
你可以通过NPM使用以下命令轻松开始使用Parallel-Webpack。
npm install parallel-webpack - save-dev
为了更好地理解Parallel-Webpack的配置,我们来看看这个简单的例子。
var path = require('path');
上面的配置包括两个独立的构建任务,分别是firstjob和secondjob。Parallel-Webpack会同时运行这两个条目,你会发现task1.bundle.js和task2.bundle.js同时被构建。
Parallel-Webpack允许你控制并行性,并包括普通Webpack的功能,如观察器和重试限制。
控制并行性
有时,你可能想限制Parallel-Webpack可用的CPU核心的使用。在这种情况下,你可以使用parallel-webpack -p=2命令指定允许的CPU核心数量。
运行观察者
让Webpack如此有影响力的功能之一是它的观察器,它可以持续重建你的应用程序。你可以通过在命令中添加watch标志,毫不费力地使用Parallel-Webpack的同样功能。
parallel-webpack
同样地,Parallel-Webpack中还有许多令人兴奋的功能,可以集成到你的CI/CD管道中,以加快它的速度。而你可以在他们的文档中找到更多关于它们的信息。
2.将你的应用程序分割成微前端
如果我们考虑传统的单体前端系统,它们中的大多数只有一个单一的构建管道和一个单一的发布管道。因此,如果有一个bug修复或新功能更新,就有可能破坏CI/CD管道中的整个构建阶段。
然而,如果我们进入微前端,我们可以分离应用程序的功能,并维护独立的构建和发布管道,以不断提供更新和错误修复。
基本上,它可以独立地整合和部署每个应用程序,让你更快地交付关键的修复。所以,这确实对CI/CD流程的速度有很大帮助。
3.组件驱动的CI:"Ripple CI"
组件驱动的CI是指只在修改过的组件和它们的所有依赖关系(即受影响的组件)上运行的CI。它不把整个项目作为一个单一实体。
当使用Bit与Bit.dev时,这种在修改过的组件及其所有依赖关系上运行的CI的涟漪效应并不局限于单个项目,而是横穿它们。这不仅比标准的CI更有效,而且还能使跨项目共享和使用的组件的协作更安全。
4.优化Web包的性能
我们通常使用默认设置的Webpack。然而,你知道我们可以通过使用插件和自定义配置来进一步优化它吗?
使用uglifyjs-webpack-plugin v1
最小化是指将网页中的代码、标记和脚本文件最小化的过程。它是用来减少构建时间的主要方法之一。
但是,随着项目规模的扩大,这个修改过程本身会花费相当多的时间。
因此,如果你的项目在不断扩大,你可以使用uglifyjs-webpack-plugin v1来优化修改时间。这个插件提供了多进程并行运行的能力和缓存支持,大大提升了构建效率。
在最小的模块上使用加载器
Webpack使用加载器将其他类型的文件转化为有效模块。然后,这些模块被你的应用程序消耗,并添加到依赖图中。
因此,必须指定相关的文件目录,以减少不需要的模块加载。
你可以很容易地使用Webpack的配置来指定文件目录,使用include选项。
const path = require('path');
5.NPM模块安装的管道缓存
我们都知道,安装节点模块需要时间。我们可以看到这个问题,特别是在管道中,因为它们每次运行都会安装节点模块。
NPM缓存是一种简单的缓存机制,我们可以在构建管道中使用,以避免每次都运行npm安装。
这种缓存机制将使你的构建管道类似于你的本地开发环境。你只需要安装一次node模块,同样的模块将被用于后续的构建。
例如,让我们考虑一个NodeJS项目的Azure DevOps管道。
为NodeJs项目缓存NPM模块的最推荐方式是使用NPM的共享缓存目录。这个目录包括所有下载模块的缓存版本。每当我们运行npm install命令时,NPM会首先检查这个目录,并在其中获取存储的包。
示例代码:
variables:
steps:
— script: npm ci
结论
正如你所了解的,有几种技术可以加快前端应用程序的构建时间。此外,还有很多技术可能适合你的技术和开发工作流程。你必须选择适合你使用情况的方法。
然而,我希望这里讨论的策略能够帮助你理解各种策略,以加快你的CI/CD流程的前端构建时间。
谢谢您的阅读......!