日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

依赖: ros-melodic-desktop 但是它将不会被安装_npm系列之依赖管理

發布時間:2023/12/3 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 依赖: ros-melodic-desktop 但是它将不会被安装_npm系列之依赖管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 版本控制

npm依賴包使用語義化的版本號,讓開發者可以從版本號中推測修改。

版本號格式為:X.Y.Z

X:代表主版本號,只有更新了不向下兼容的API時才需要修改
Y:次版本號,當模塊增加了向下兼容的功能時需要修改
Z:補丁版本號,當模塊進行了向下兼容的bug修改時需要修改

npm有些符號可以用來限制版本,并且不同的符號有不同的更新版本號的規則

  • 脫字符^,限定了安裝版本的主版本號
    用npm install下的依賴,寫入package.json中時,就是使用的脫字符限定了版本號
"ajax": "^0.19.0", "ava": "^1.3.1", "babel-loader": "^8.0.5",

當我們執行 npm update packageName時,因為使用了脫字符限定了主版本號(其他符號更新時,也與符號相關),所以只會更新該大版本號下的次版本號和修訂版本號更高的版本。但是有種情況例外,當主版本號為0時,這種是不穩定的版本,所以盡管用脫字符限制,但是次版本號一樣不會更新,只會更新修訂版本號
例:版本 ^1.2.1,可更新的范圍是 >1.2.1 && <2.0.0
例:當安裝了axios的0.1.0的版本,執行 npm update axios --ddd (調試,查看過程)。
沒有更新,因為沒有大于0.1.0的0.1.x版本

  • 波浪號~,限定次要版本號
    例:~1.5.1代表可更新范圍為>=1.5.1 && =< 1.6.0
  • x,X,*和空可以替代版本號中的任意一段,表示該位置版本號沒有限制
    例:x,X,*和空可以匹配任何版本(本地測試安轉時,會安裝最新版本)
    1.x,可更新范圍是 >=1.0.0 && =<2.0.0
  • 無符號,指定版本,如使用 vue-router: 3.0.7 只會安裝這個版本號的依賴

npm install會安裝滿足條件的最新版本。

問題:

  • 如何升級大版本號?
    npm install packageName@Y
  • 如何降級版本號?
    npm install packageName@oldVersion
  • 2. 版本鎖定

    為什么需要鎖定依賴的版本?
    在package.json中axios的依賴是 "axios": "^0.8.0",執行npm install時會安裝哪個版本?
    - 安裝了版本0.8.1

    明明在package.json中寫的是0.8.0,為什么安裝的是0.8.1?這版本不一樣啊?
    - 因為準確的說package.json中寫的不是版本0.8.0,而是^0.8.0,前者是一個確定的版本,而后者是一個版本范圍。0.8.1是滿足這個條件的最新版本。

    那么問題來了,這種依賴安裝的方式,那我們在本地開發和正式線上前的安裝,當需要多人協同開發的時候,安轉的依賴版本有可能不一樣。這樣可能就會導致一些,“我這里是好的,本地環境是好的”的奇怪問題。

    那我們要怎么解決這個問題,使地大家都能安裝同一個版本的依賴?
    npm在5.0.0(但在5.6.x的版本中才穩定下來)的版本中增加了package-lock.json文件,在此版本和更高的版本中,使用npm install時會自動生成此文件。

    "axios": {"version": "0.8.1","resolved": "http://registry.npm.oa.com/axios/download/axios-0.8.1.tgz","integrity": "sha1-4Or+wPNGE5Un3Dt5/cv/gDSiQEU=","dev": true,"requires": {"follow-redirects": "0.0.7"}}

    lock文件中有這個依賴安裝的特定版本、下載地址、驗證模塊完整性的hash以及它的依賴列表。
    當項目中有package-lock.json文件時,會根據此文件安裝版本。使用npm更新依賴,則package-lock.json文件會被更新,package.json文件可能會更新(有時候不會,比如上面的axios的更新補丁版本號)。

    那如果我手動修改了package.json文件,它和lock文件不一致了會怎么樣?
    - 如果是在package.json中增加或刪除了依賴,npm install后會同步增加和刪除
    - 如果是對版本號進行了修改
    1. 如果修改后的版本不是之前范圍中符號固定不變的部分,則lock中的會跟著修改。
    如圖,我將package.json中的axios由0.8.0改為了0.7.0,將vue-router由3.0.7改為了2.0.0

    之前固定的部分是0.8

    之前固定的部分時3

    2. 如果修改后的版本沒有影響之前固定不變的部分,lock文件不會修改
    如圖,我將package.json中的element-ui由2.10.1改為了2.9.1

    lock文件中的并沒有改變,因為它的版本依舊是滿足依賴的新范圍,此時不一定是最新范圍。
    所以在依賴降級時,要注意直接修改package.json中的版本號可能行不通。

    當我們安裝依賴時版本不對,可能會刪掉package-lock和node_modules,重新npm install。
    這種方式可能會導致,之前鎖定的版本被更新。
    比如以前的lock鎖定了2.10.1,但是之后出來了2.10.2,重新install時,會安裝后一個版本。

    3. package.json中的依賴分類

    1)dependencies: 項目運行時的依賴
    2)devDependencies: 項目開發時的依賴。
    線上環境,可以使用npm install --production忽 略開發依賴。
    3)peerDependencies: 項目當前依賴所在的宿主環境所需要安裝的依賴和版本
    例如,element-ui的peerDependencies中有vue。如果安裝element-ul,沒有安裝vue,npm就會警告。

    參考文章:

    2018 年了,你還是只會 npm install 嗎??juejin.im前端工程化(5):你所需要的npm知識儲備都在這了 - 掘金?juejin.im

    總結

    以上是生活随笔為你收集整理的依赖: ros-melodic-desktop 但是它将不会被安装_npm系列之依赖管理的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。