手机网站设计论文,自己做游戏的 网站,游戏ui设计师网站有哪些,网站建设为什么有些100元的1 node_modules安装方式
在npm3之前是以嵌套结构方式安装依赖包#xff0c;存在两个问题#xff1a;
依赖路径太长多个包依赖一个相同包时#xff0c;本地磁盘会存储多个相同的包
npm3和yarn使用扁平化结构#xff0c;node_modules变成所有包放在同一层级
注意#xf…1 node_modules安装方式
在npm3之前是以嵌套结构方式安装依赖包存在两个问题
依赖路径太长多个包依赖一个相同包时本地磁盘会存储多个相同的包
npm3和yarn使用扁平化结构node_modules变成所有包放在同一层级
注意多个版本的包只有一个会被提升至顶层其他版本的包会嵌套安装到各自依赖中 哪个版本的包被提升依赖于package.json中包的前后顺序于是又会出现新的问题 依赖结构不一致导致扁平化后的结果也不一致
于是出现package-lock.json和yarn.lock保证install后产生确定的依赖结构
幽灵依赖是指在package.json中未定义的依赖但在项目中依然可以正确被引用到
第二个问题是幽灵依赖的产生因为扁平化依赖包被提升至顶层导致用户可以直接引用它存在问题是引用版本不兼容以及当项目不再依赖原始包时直接引用依赖包会出现问题
第三个问题是依赖分身和依赖提升机制可能导致大量依赖被重复安装以下示例无论提升B1.0还是B2.0都会存在重复版本包被安装
2 yarn解决了上面哪些问题
提升安装速度npm安装包时是串行的每个包按照顺序安装yarn采用并行操作。在缓存中yarn会将每个包缓存在磁盘上使用yarn.lock记录依赖信息保证得到稳定的依赖结构
注意没有解决幽灵依赖和依赖分身问题
3 pnpm如何解决上述问题
内存寻址存储策略将包安装在系统的全局存储中依赖的每个版本只会安装一次在引用依赖时会通过硬链接和软链接找到该文件为实现此过程node_modules下会出现.pnpm目录
硬链接使用户可以通过路径查找到全局存储中的源文件软链接通过它可以找到对应磁盘目录下的依赖地址
1幽灵依赖问题只有直接依赖会平铺在node_modules下子依赖不会被提升 2依赖分身问题相同依赖只会在全局存储中安装一次。
弊端
pnpm创建的node_modules依赖于软链接在不支持软链接的环境中无法使用例如Electron依赖源文件安装在全局存储中调试依赖或给依赖打补丁不方便