前端开发经常会提到前端工程化,也都知道前端工程化包含模块化开发、组件化开发、工具开发、构建工具的使用、代码规范与质量管理等多个方面。特别是如今前端项目规模和复杂度越来越大,通过一系列标准化的流程、规范和工具,提升前端开发的效率、质量和可维护性,确保项目能够在团队协作下顺利推进;前端工程化也是团队开发成提高容错率和提高效率的一个解决方案。
但是前端实际开发中,往往同功能的组件/工具函数可能会在公司内部不同的项目中被多次使用,
例如:表单验证、数据处理、网络请求、UI组件等。
以往的开发习惯就是复制到不同的项目中,这样会导致项目代码重复、重复开发、同时也会导致代码的维护成本增加。随着公司规模的扩大,这种重复开发的情况会更加频繁,这就需要我们将这些组件/工具函数进行封装,通过npm或者其他方式进行管理和共享,这样就可以在不同的项目中直接引用,避免了重复编写的问题。但是此时就会出现一个问题,即:是否所有组件都需要上传到NPM?我们该怎么判断或者选择哪些组件需要上传到NPM?
所以我们在决策时就需要考虑到以下几个问题:
1、组件/工具函数的复用性
-值得上传的情况:
*通用组件(如UI按钮、表单控件等)
*会被多个项目复用的业务组件
*具有特定功能的工具类组件
比如支付组件/抵用券组件/常用的tab组件/http请求等
-不必上传的情况:
*高度项目特定的组件
*一次性使用的组件
比如订单列表中的订单组件/特定的搜索组件等
2、维护/人力成本考量
-NPM需要做好版本管理
-文档维护
-兼容性测试/保证
-问题跟踪
所以根据以上两点,我们就可以大致判断哪些组件推荐发布,哪些组件不推荐发布。
1、基础组件库/通用工具类建议发布
2、可复用项目数大于两个建议发布
3、组件/函数依赖复杂度较低的建议发布,比如常说的“纯函数”
4、可复用的业务组件(如支付)可以考虑发布
5、单个项目专用/特定的组件不需要发布
既然我们上传到NPM上了,就要考虑安全问题,因为NPM上的组件是公开的,出于企业代码安全、项目安全等考虑,是否需要创建私有NPM仓库就成了一个问题。
所以我们就需要用一些标准来判断是否需要创建私有NPM仓库。
1、代码安全需求
-包含公司核心业务逻辑的模块
-包含专利算法或者商业机密的模块
-包含内部环境配置、密钥的模块
2、合规与管理需求
-需要完整的依赖变更记录
-避免第三方组件服务中断影响
-管理内部依赖版本
结合是否需要发布到NPM的标准,我们可以总结出一个决策私有NPM仓库的标准,即:
1、代码安全需求:评估占比40%
2、跨项目复用数大于两个:评估占比20%
3、合规与管理需求:评估占比10%
4、项目协同人员大于5人:评估占比10%
5、有专门的人来管理私有NPM仓库:评估占比10%
当组件/函数评估占比总和大于60%时,我们就可以考虑创建私有NPM仓库了。