每个开发人员都使用npminstall安装依赖项。到目前为止,NPM平台上已经托管了超过190万个包。面对这么多的包,我们在选择第三方npm包的时候应该注意些什么呢?这里有五个建议给你。1.查看开源许可证(License)开源许可证是合法的许可证。通过它,版权所有者明确允许用户免费使用、修改和共享受版权保护的软件。版权法默认禁止共享。也就是说,没有许可证的软件等同于保留版权。虽然是开源的,但是用户只能阅读源代码,不能使用。一旦使用,将侵犯版权。因此,如果软件是开源的,则必须明确授予用户开源许可证。NPM平台上可以查看包的LicenseLicense通常分为“CopyLeft(版权)”和“Permissive(松散)”两类:CopyLeft:如果你使用这个包,你的代码也必须是开源的。这对一些商业项目并不友好,比如GPL和LGPL协议。许可的:对包的使用有最少的限制,并且允许闭源。可以说几乎没有任何限制,但是它们之间还是有一些区别的,如下图所示。我们可以使用license-checker[1]工具一次性检查项目中的NPM包是否全部合规。2、查看贡献频率和下载量NPM平台还可以查看包的每周下载量和趋势图。数字越大,使用它的人就越多。由于社区中有很多类似功能的包,比如moment.js、dayjs等时间日期类库。NPMtrends[2]可以同时比较多个包的下载增长趋势,从而更直观地了解它们的流行程度。此外,GitHub仓库的star、fork、commit频率、贡献者等相关指标也能从侧面反映人气。3.平衡包大小对于前端来说,优化性能最直接的方法就是减少代码包大小。所以在选择第三方包的时候,还要考虑它的包大小。Bundlephobia[3]可以对束体积进行可视化分析。从下图可以看出,moment.js打包后将近300kB,gzip压缩后将近70kB。而且dayjs打包后只有6kB,比moment.js小很多。对于微信小程序等对代码包大小有明确限制的项目,轻量级的dayjs是更好的选择。4、是否有庞大的维修队伍?虽然大多数NPM包都包含比较完整的文档,但往往会存在一些兼容性、JS异常或性能相关的问题。所以如果背后有庞大的团队进行维护,我们用起来会更安心。可以关注以下几个方面:UsedBy和Contributors越高说明你不是早期用户,很多开发者已经为你趟过水了。Contributors视图可以直观的看到贡献者的贡献频率。如果很多人经常贡献,说明仓库得到了社区更多的关注和支持。CommunityStandards将仓库与开源社区的规范标准进行比较。达到的标准越多,仓库就越成熟。5.评估安全性包安全性是选择NPM包的另一个关键因素,其安全策略可以在存储库的“安全”选项卡下看到。如果维护者已采取措施确保安全,则显示已激活。对于项目中已有的npm依赖,可以使用命令npmaudit进行安全检查。npmgraph[4]可以直观地分析包的依赖关系,确保没有安全漏洞,然后将其安装到项目中。总结回顾选择第三方NPM包的5个最佳实践:查看开源许可证,看贡献频率和下载量权衡包的大小是否有庞大的开发团队进行维护评估安全性在做出选择时,我们'd最好根据以上维度制作一份研究文档,在团队内部进行共享和讨论,最终得出一致的结论。
