• npm中peerDependencies的作用


    npm中peerDependencies的作用

    peerDependencies 一般是给插件使用的, 它的作用有以下几点:

    1. 要求项目拥有peerDependencies所指定的环境依赖, 完成子环境要求父环境具有某些依赖包
    2. 提升项目(插件)依赖
    3. 减少重复安装依赖

    例如: 我的项目叫 项目A , 其内部安装了一个插件叫 插件B , 插件Bpackage.json 如下:

        // 插件B package.json
        {
            "peerDependencies": {
                "vue": ">=2.6.4"
            }
        }
    

    则需要我的 项目A 安装有依赖 vue@2.6.4 , 即 项目Apackage.jsonnode_modules 要是这样:

        // 项目A package.json
        {
            "dependencies": {
                "vue": "^2.6.4",
                "插件B": "^1.0.0"
            }
        }
    
    # 项目A 的目录结构
    +---项目A
    |
    |
    +---node_modules
        +---vue
        |       package.json
        |
        +---插件B
                package.json
    

    第一点解释完成。


    那疑问在于, 既然 插件B 需要 vue@>=2.6.4 , 为什么不将其放在 dependencies 中呢? 因为这样的话整个 项目A 的文件结构将是这样:

    # 项目A 的目录结构
    +---项目A
    |
    |
    +---node_modules
    |
    |
    +---插件B
            package.json
            +---vue
                package.json
    

    这样的意思是 插件B 的开发用到了 vue@>=2.6.4 , 而真正需要的意思是: 插件B 要在 vue@>=2.6.4 的环境中使用 , 那么第二点解释完成


    还有这样情况, 项目A依赖了vue@2.6.5, 而插件B的开发需要用到vue@>=2.6.4, 此时项目A 的 package.jsonnode_modules 将是这样:

        // 项目A package.json
        {
            "dependencies": {
                "vue": "^2.6.5",
                "插件B": "^1.0.0"
            }
        }
    
        // 插件B package.json
        {
            "dependencies": {
                "vue": "^2.6.4",
            }
        }
    
    # 项目A 的目录结构
    +---项目A
    |
    |
    +---node_modules
        +---vue
        |       package.json
        |
        +---插件B
            package.json
            +---vue
                package.json
    

    这样的话 项目A 会重复安装两次不同版本的 vue , 但是可以发现: 插件Bvue 的依赖版本刚好在 项目A 的范围内, 于是我们如果设置了 插件Bpackage.json 为这样:

        // 插件B package.json
        {
            "peerDependencies": {
                "vue": ">=2.6.4",
            }
        }
    

    那么 插件B 将不会安装 vue 而是使用 项目A(父环境) 中的 vue , 从而减少重复安装依赖的情况, 最后 项目A插件Bpackage.jsonnode_modules 将是这样:

        // 项目A package.json
        {
            "dependencies": {
                "vue": "^2.6.5",
                "插件B": "^1.0.0"
            }
        }
    
        // 插件B package.json
        {
            "peerDependencies": {
                "vue": ">=2.6.4"
            }
        }
    
    # 项目A 的目录结构
    +---项目A
    |
    |
    +---node_modules
        +---vue
        |       package.json
        |
        +---插件B
                package.json
    

    第三点解释完成, 本文结束


    到这其实对 peerDependencies 还是不怎么了解, 暂且写下本文记录着先, 有错请指出!

  • 相关阅读:
    多库查询 sp_addlinkedserver使用方法(添加链接服务器)(转)片段整理
    利用asp.net路由实现url解析
    C#事务 访问数据库(转)
    男人30而立,30岁的男人喊起来!你们立了吗?
    c# 调用SQL Server存储过程返回值(转)
    转摘 JQUERY操作JSON例子
    jstree 从简单说起Jquery 插件应用说明
    利用反射对对象属性赋值取值操作
    asp.net 造成seesion 丢失的问题之一
    jquery 实现从左边listbox选择至右边listbox
  • 原文地址:https://www.cnblogs.com/fitzlovecode/p/peerDependencies.html
Copyright © 2020-2023  润新知