前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >选择第三方 NPM 包时的 5 条最佳实践

选择第三方 NPM 包时的 5 条最佳实践

作者头像
Leecason
发布2022-07-13 14:26:14
6150
发布2022-07-13 14:26:14
举报
文章被收录于专栏:小李的前端小屋

每个开发人员都使用过 npm install 安装依赖。截止目前 NPM 平台上已经托管超过 190w 个包了,面对茫茫多的 package,在选择第三方 NPM 包时应该关注些什么?

这里为大家介绍 5 条最佳实践。

1. 检查开源许可证(License)

开源许可证是一种法律许可。通过它,版权拥有人明确允许,用户可以免费地使用、修改、共享版权软件。

版权法默认禁止共享,也就是说,没有许可证的软件,就等同于保留版权,虽然开源了,用户只能看看源码,不能用,一用就会侵犯版权。所以软件开源的话,必须明确地授予用户开源许可证。

可以在 NPM 平台上查看包的 License

License 通常分两大类:"CopyLeft(著佐权)" 和 "Permissive(宽松式)":

  • CopyLeft:如果你使用了这个包,那么你的代码也必须开源。这对一些商业化的项目不太友好,比如 GPL 和 LGPL 协议。
  • Permissive:对包做了最低限度的使用限制,允许闭源,可以说几乎没有限制,但是各自又有一些区别,具体见下图。

我们可以用 license-checker[1] 工具来一次性检查项目中的 NPM 包是否都是合规的。

2. 看贡献频率和下载量

NPM 平台也可以查看包的每周下载量和趋势图,数字越大意味着使用的人越多。

由于社区里有很多功能类似的包,比如 moment.jsdayjs 这类时间日期库。NPM trends[2] 可以同时比较多个包的下载量增长趋势,从而更直观地了解它们的受欢迎程度。

另外,GitHub 仓库的 stars、 forks、 commit frequency 和 contributors 等相关指标也可以侧面反映受欢迎程度。

3. 权衡包体积大小

对于前端来说,优化性能最直接的手段就是降低代码包大小。所以选择第三方包时,也要考虑它的包体积。

bundlephobia[3] 可以对包体积进行可视化分析。从下图可以看出,moment.js 打包后会有将近 300 kB,gzip 压缩后会有 70kB。

dayjs 打包后只有 6 kB,远小于 moment.js

对于像微信小程序这样对代码包大小有明确限制的项目来说,轻量级的 dayjs 是更好的选择。

4. 是否有大型团队在进行维护

尽管大部分的 NPM 包都包含较全的文档,但是往往也都存在一些兼容性、JS 异常或性能相关的 issue。因此如果背后有大型团队在进行维护,我们使用起来会更放心。

可以关注以下几个方面:

Used By 和 Contributors 数量

数量越多意味着你不是早期用户,很多开发者已经帮你趟过水了。

Contributors 视图

可以直观地看到贡献者的贡献频率,如果很多都频繁贡献,意味着仓库受到社区更多的关注和支持。

Community Standards

将仓库与开源社区的规范标准进行比较,达到的标准越多意味着这个仓库越成熟。

5. 评估安全性

包安全性是选择 NPM 包的另一个关键因素,在仓库的「Security」tab 下可以看到它的安全策略。

如果维护者已经采取了措施来确保安全性,会显示已激活

对于项目中已有的 NPM 依赖,可以使用命令 npm audit 来进行安全性检查。

npmgraph[4] 能够对包进行依赖可视化分析来确保没有安全漏洞,然后再安装到项目当中。

总结

回顾一下选择第三方 NPM 包的 5 条最佳实践:

  • 检查开源许可证
  • 看贡献频率和下载量
  • 权衡包体积大小
  • 是否有大型开发团队在进行维护
  • 评估安全性

在做选择时,我们最好能根据以上维度产出一份调研文档,并在团队内分享和讨论,最终得出一致的结论。

参考

  • https://blog.bitsrc.io/5-best-practices-when-choosing-third-party-npm-packages-2198994357f9
  • https://blog.51cto.com/u_13859849/2140790
  • https://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html
  • https://www.runoob.com/w3cnote/open-source-license.html

谢谢支持❤️

如果觉得不错,就点赞在看分享吧,谢谢各位大佬啦~

参考资料

[1]

license-checker: https://www.npmjs.com/package/license-checker

[2]

NPM trends: https://www.npmtrends.com/

[3]

bundlephobia: https://bundlephobia.com/

[4]

npmgraph: https://npm.anvaka.com/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小李的前端小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 检查开源许可证(License)
  • 2. 看贡献频率和下载量
  • 3. 权衡包体积大小
  • 4. 是否有大型团队在进行维护
    • Used By 和 Contributors 数量
      • Contributors 视图
        • Community Standards
        • 5. 评估安全性
        • 总结
        • 参考
        • 谢谢支持❤️
          • 参考资料
          相关产品与服务
          云开发 CloudBase
          云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档