美文网首页npmpnpmalready
111.包管理工具npm和pnpm区别

111.包管理工具npm和pnpm区别

作者: wo不是黄蓉 | 来源:发表于2022-08-25 20:45 被阅读0次

    包管理工具npm和pnpm区别

    npm vs pnpm

    • npm扁平化树,npm3解决了扁平化依赖树的问题,有引入了其他问题。扁平化处理node_modules下的包,相同路径下的包由于nodejs的机制,即使b的packages.json中没有依赖a,但是依旧能访问到a,会带来一些安全问题。拉平算法复杂。有些包不能被拉平。

    • 不会产生幽灵依赖问题

    npm3之前,node_modules下面的包没有扁平化处理,不同的模块会有相同的依赖,占用内存空间,占用下载资源,慢

    pnpm通过链接的方式来解决的。

    怎么产生幽灵依赖的?为什么会产生幽灵依赖,原因是因为npm的扁平化处理结构+nodejs的特性,使得我们直接访问到node_modules下的包。

    • 我们本身的package.json中没有引入debug的包,但是我们引用了express,express依赖了这个包,然后express更新了,但是不是express本身进行更新了,它只是打了个patch,但是我们依旧引用的是旧的api就会报错。

    • express删除了引用debug,我们项目也会报引用错误。

    关于幽灵依赖,网上百度的相关文章我还是没有很理解,直到看到这个视频,视频链接

    pnpm怎么保证不会出现上述情况的?

    pnpm严格按照package.json中的依赖来执行,不会出现这样的问题。

    怎么进行检查使用的包都是已经声明过的?

    可以使用dependence-check工具

    pnpm别名功能:使用场景

    • 对现有包打补丁

    • 安装不同版本的包使用别名进行依赖

    • 结合包管理器的hooks

    npm、yarn和pnpm特性对比参考

    pnpm经常搭配monorepo项目一起使用

    相关文章

      网友评论

        本文标题:111.包管理工具npm和pnpm区别

        本文链接:https://www.haomeiwen.com/subject/gvezgrtx.html