Yarn工做區

本節咱們學習 Yarn 工做區,什麼是工做區呢? 工做區是設置軟件包體系結構的一種新方式,默認狀況下從 Yarn 1.0 開始使用。咱們能夠使用這種方式安裝多個軟件包, 也就是隻須要執行一次 yarn install 命令即可以將全部依賴包所有安裝。node

如何使用工做區

在 package.json 文件中添加如下內容,接下來咱們將此目錄稱爲 「工做區根目錄」:json

{
    "private": true,
    "workspaces": ["workspace-a", "workspace-b]
}

其中 private:true 是必填項,工做區並非要發佈的,由於添加了此安全措施來確保沒有任何東西能夠意外地暴露它們。安全

建立這個文件以後,咱們須要在建立兩個新的子文件夾:workspace-a 和 workspace-b。在每一個文件夾裏面,建立一個具備如下內容的 package. json 文件:學習

workspace-a/package.json:測試

{
  "name": "workspace-a",
  "version": "1.0.0",

  "dependencies": {
    "cross-env": "5.0.5"
  }
}

workspace-b/package.json:spa

{
    "name": "workspace-b",
    "version": "1.0.0",
    
    "dependencies": {
        "cross-env": "5.0.5",
        "workspace-a": "1.0.0"
    }
}

最後能夠在工做區根目錄中執行 yarn install 命令,若是一切正常,如今應該有一個相似下面這樣的文件層次結構:code

/package.json
/yarn.lock

/node_modules
/node_modules/cross-env
/node_modules/workspace-a -> /workspace-a

/workspace-a/package.json
/workspace-b/package.json

workspace-b 須要一個在 workspace-a 中的文件,如今將直接使用當前項目內部的文件,而不是從 Github 上面獲取。cross-env 包已正確去重並放在項目的根目錄下,讓 workspace-a 和 workspace-b能夠一塊兒使用這個包。ci

限制和警告

  • 包層級在工做區和用戶獲得的內容之間將有所不一樣(工做區依賴將提高到文件系統層次結構中)。 對這個層級的假設已是危險的,由於提高過程不是標準化的,因此理論上沒有什麼新東西。
  • 在上面的示例中,若是 workspace-b 依賴於 workspace-a 的包,可是引用的是不一樣的版本,那麼依賴包將從 Github 安裝,而不是從本地文件系統連接。 這是由於一些軟件包實際上須要使用之前的版本,以創建新的版本(Babel 是其中之一)。
  • 在工做區中發佈包時要留心。 若是你正準備發佈下一個版本,而且你決定引用一個新依賴但忘了在 package.json 中聲明,你的測試仍可能在本地經過(若是其餘包已經把那個引用下載到了項目根目錄)。 然而其餘從源中拉取包的用戶就不行了,因爲依賴列表如今是不完整的,他們沒辦法下載那個新依賴。 目前沒有辦法在這種狀況下拋出警告。
  • 工做區必須是項目根目錄的子目錄,咱們不能也不該當引用位於項目目錄以外的工做區。
  • 工做區不支持嵌套。

連接:https://www.9xkd.com/get

相關文章
相關標籤/搜索