前端 Vue yarn.lock檔案:詳解和使用指南

emanlee發表於2024-05-02

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 react@16.0.0

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"

...

相關文章