公用组件是否有必要需要上传到NPM?公司是否有必要部署私有的 NPM 仓库?

前端开发经常会提到前端工程化,也都知道前端工程化包含模块化开发、组件化开发、工具开发、构建工具的使用、代码规范与质量管理等多个方面。特别是如今前端项目规模和复杂度越来越大,通过一系列标准化的流程、规范和工具,提升前端开发的效率、质量和可维护性,确保项目能够在团队协作下顺利推进;前端工程化也是团队开发成提高容错率和提高效率的一个解决方案。

但是前端实际开发中,往往同功能的组件/工具函数可能会在公司内部不同的项目中被多次使用,

例如:表单验证、数据处理、网络请求、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仓库了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容