依赖包的思考

来源:4-8 通用npm API模块封装

__狂奔的蜗牛

2020-12-26 11:34:27

Sam老师,请教个问题,我们在core/cli和utils/get-npm-info下都依赖了semver包,但是我们在core/cli下又依赖了get-npm-info, 我测试移除了core/cli下package.json中的semver并删除了node_modules目录重新安装。发现任然可以semver。是否证明npm之前依赖存在传递问题?既依赖上semver包从get-npm-info包传递到了core/cli,如果存在的话我们又是否可以新建一个包专门用来管理包依赖呢?用一个包来管理依赖的话好处是只用安装一份包,而不是像现在code/cli和utils/get-npm-info下的node_modules都有semver。但是又有个问题是比如我有a b c三个包,c就是专门管理依赖的包,a依赖b,b又可以独立使用,那么如果a存在大量b使用不到的包,因为包都在c中管理,那么单独使用b的时候也会安装一些无用的包,好像无解啊?

写回答

1回答

Sam

2020-12-26

你好,非常高兴看到你对这个问题的深入思考,不过你的这个问题已经在npm层面解决了,npm install安装的依赖会全部平铺到node_modules中,然后通过软链接的方式进行引用,所以你担心的semver重新安装影响性能的问题不会存在,同时真实场景中cli和get-npm-info两个package引用的semver版本有可能存在差异的,所以不能直接让它们指向一个版本,可以参考:

https://www.zhihu.com/question/66629910

这篇文章中的“模块扁平化”(dedupe)部分

3
hjk875
hp>我现在使用yarn workspace 解决了这个问题

h021-12-28
共2条回复

2024版 Web前端架构师

2024版 ,前端高手课!全局架构思维/系统培养大厂P7技术专家/中小厂前端Leader

1107 学习 · 2254 问题

查看课程