前端 Vue yarn.lock文件:詳解和使用指南

yarn.lock文件:詳解和使用指南

https://www.python100.com/html/38KF796X6BHM.html

一、什麼是yarn.lock文件

yarn.lock文件是一個產生於Yarn 0.22及以後版本的文件,它是一個自動生成的鎖文件,記錄了當前項目的依賴關係,並確保每個依賴的版本都是穩定的,這樣可以保證軟件包安裝的重現性和可靠性,避免不必要的依賴衝突和版本更新造成的問題。

二、yarn.lock文件的作用

在一個JavaScript項目中,通常會依賴很多的npm模塊,而這些模塊中可能存在依賴關係,以及不同版本的模塊可能會有衝突。yarn.lock文件記錄了所有模塊的確切版本號和依賴關係,它的作用就是爲了鎖定這些模塊的版本,以確保在不同的環境中,都可以得到相同的依賴版本。

如果沒有yarn.lock文件,隨着npm模塊的更新、升級或者刪除,依賴版本將變得不可預測,即使使用相同的命令下載依賴,可能也會得到不同的版本,這會導致程序的運行出現異常,而且解決依賴問題也會變得非常困難。

三、yarn.lock文件的使用

1. 創建yarn.lock文件

yarn.lock文件默認是不存在的,使用yarn install或yarn add命令時,yarn會自動生成yarn.lock文件,並且鎖定所有的依賴包.

 
// 安裝依賴,並生成yarn.lock文件
yarn add react
yarn install

2. 更新yarn.lock文件

運行yarn add或yarn upgrade命令會自動更新yarn.lock文件,如果我們想獨立更新某個包的版本,可以直接手動修改yarn.lock文件,然後再運行yarn install來更新依賴

// 升級某個包的版本
yarn upgrade [email protected]

3. 解決依賴衝突

yarn.lock文件中的鎖定版本,會自動解決依賴關係,避免了可能出現的依賴衝突。在同一臺機器中,不同的項目可以使用不同的鎖定文件,這樣依賴關係會被保證,而且減少提交到代碼庫中的冗餘文件的數量。

4. 共享yarn.lock文件

在團隊協作開發時,如果每個人都使用npm install或yarn install來下載依賴,不能確保每個人都會使用相同的依賴版本,可能導致代碼構建出現問題,解決這個問題最好的方式是將yarn.lock文件提交到代碼倉庫中,所有成員都使用同一個yarn.lock文件來下載依賴


五、yarn.lock文件的示例代碼

# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
yarn.lock 文件用於跟蹤項目依賴的具體版本,以確保其他開發人員在運行 yarn install 時安裝相同版本的依賴,從而保持項目環境的一致性。

core-js-compat@^3.0.0:
  version "3.14.0"
  resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.14.0.tgz#b574dabf29184681d5b16357bd33d104df3d29a5"
  integrity sha1-tXTavykYRoHVsWNXvTPRBN89KaU=
  dependencies:
    browserslist "^4.16.6"
    semver "7.0.0"

1.5.1. Identifier(s)

第一行的 core-js-compat@^3.0.0 是依賴的 identifier。和 package.json 裏對應的包名和版本區間, 用 @ 連接。這邊的標題裏帶了 (s), 是因爲多個 Identifier 最終可能都指向同一個版本 (具體例子可以看下文 ### dependencies 裏給出的例子)
1.5.2. version

第二行 version 是實際安裝的版本。通常是滿足版本區間裏的一個版本, 比如上一行 identifier 裏版本區間是 ^3.0.0, 這裏實際安裝的是 3.14.0, 符合要求。但是爲什麼要說是 “通常” 呢, 因爲有例外, 在後文 ### resolutions 部分會講到。
1.5.3. resolved

第三行 resolved 的是一個鏈接, 是下載這個包的地址。這個 url 裏的域名部分跟項目裏配置的 .npmrc 或你本地的 npm 配置的 registry 有關。
1.5.4. integrity

第四行 integrity 是對 resolved 下載下來的文件進行完整性校驗。如果出現 diff, 說明同一個下載鏈接對應的文件被修改過。
1.5.5. dependencies

第五行 dependencies 是這個包自己的依賴。如這裏依賴的 browserslist "^4.16.6", 你想看下實際安裝的哪個版本, 就可以把它拼成 Identifierbrowserslist@^4.16.6", 以此爲關鍵字在 yarn.lock 中搜索, 就能找到對應的 “塊” 了。
鏈接:https://blog.csdn.net/wan212000/article/details/125302217

"@achrinza/node-ipc@^9.2.5":
"integrity" "sha512-/EvNkqB4HNxPWCZASmgrjqG8gIdPOolD67LGASvGMp/FY5ne0rbvpYg5o9x8RmgjAl8KdmNQ4YlV1et9DYiW8g=="
  "resolved" "https://registry.npmmirror.com/@achrinza/node-ipc/-/node-ipc-9.2.7.tgz"
  "version" "9.2.7"
 dependencies:
    "@node-ipc/js-queue" "2.0.3"
    "event-pubsub" "4.3.0"
    "js-message" "1.0.7"

...
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章