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 還是不怎么了解, 暫且寫下本文記錄着先, 有錯請指出!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM