最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • npmv2、npmv3、pnpm,模块管理方案对比

    正文概述 掘金(小哥哥味道)   2020-12-06   634

    最原始的问题是:A 依赖 B v1.0,C 依赖 B v2.0,那这时候 B 就会有冲突。 npmv2、npmv3、pnpm,模块管理方案对比

    npm v2

    npm v2 采用了嵌套的方式来解决冲突,如下图。它带来的新问题就是:B 存了多份浪费空间npmv2、npmv3、pnpm,模块管理方案对比

    npm v3

    npm v3 采用了扁平化的风格 (flat mode),尽可能将相同的模块提取到根目录,如下图。

    npmv2、npmv3、pnpm,模块管理方案对比

    flat mode 也不是完美的,还存在两个问题:

    1. 还是会有冗余空间,把 B v1.0 提到根目录,B v2.0 还是要嵌套存储,反之亦然
    2. 影子依赖 (Phantom dependency) 问题

    影子依赖问题

    关于影子依赖问题,我们看下面一段代码:package.json 里面并没有声明 glob 依赖,但代码中却可以正常使用。实际上 glob 是 rimraf 的依赖,glob 是被 flat mode 的机制提升到根目录的。

    my-library/package.json
    
    {
      "name": "my-library",
      "version": "1.0.0",
      "main": "lib/index.js",
      "dependencies": {
        "minimatch": "^3.0.4"
      },
      "devDependencies": {
        "rimraf": "^2.6.2"
      }
    }
    
    my-library/lib/index.js
    
    var minimatch = require("minimatch")
    var expand = require("brace-expansion");  // ???
    var glob = require("glob")  // ???
    

    除了会导致难以维护以外,还可能会导致其它问题。例如本地开发的时候会去安装 devDependencies,但在发布的时候不会安装 devDependencies,这样的话发布的时候就不存在 glob 导致无法正常工作。

    pnpm:完美的解决方案

    pnmp 目录结构上采用嵌套的方式避免了影子依赖问题,采用软链接的方式解决了模块复用的问题。


    起源地下载网 » npmv2、npmv3、pnpm,模块管理方案对比

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元