Rush Stack商店部落格活動
跳至主要內容

自動安裝器

單一儲存庫通常需要安裝提供 shell 命令等工具的 NPM 套件。在大多數情況下,這些工具相依性可以宣告為某些 Rush 專案的 devDependencies,然後它們會由 rush install 使用其集中式縮減包裝檔案 (套件管理員鎖定檔案) 安裝。但是,有時在未叫用 rush install 的情況下,或如果某人未完成的工作包含某些 package.json 修改,導致 rush install 可能失敗的情況下,會需要這些相依性。針對這些情況,Rush 的自動安裝器功能提供了安裝工具相依性的隔離機制。

自動安裝器定義為 common/autoinstallers/ 下的資料夾,其中包含 package.json 檔案和其自身的私有縮減包裝檔案。此資料夾會新增至 Git,但它不是一般的 Rush 專案:它不是由 rush install 安裝,也不包含任何用於 rush build 的可建置原始程式碼。自動安裝器純粹是安裝 NPM 相依性的容器。自動安裝器可以與 Rush 功能 (例如自訂指令Rush 外掛程式) 相關聯;當叫用相關聯的功能時,Rush 會自動安裝相依性。

何時使用自動安裝器

如果您要啟用 Rush 外掛程式,則必須設定自動安裝器。

如果您要建立指令碼需要 NPM 相依性的Rush 自訂指令,則有幾種可能的方法可以考慮

  • rush install:通常,Rush 單一儲存庫中的大多數相依性將會由 rush install 使用集中式縮減包裝檔案一併安裝。針對大多數需求,這是最簡單且最容易維護的方法。如果某些相依性與特定工作無關,則可以使用專案選取參數 (例如 rush install --to example-project) 來跳過安裝它們。

  • install-run.jsinstall-run.js 指令碼可讓您在 rush install 之外安裝 NPM 套件。這對於在完全未叫用 rush install 的情況下執行的指令,或是 rush install 可能損毀的情況下非常有用。例如,Git 認可勾點指令碼會在 rush install 可能失敗的分支上執行:開發人員通常會認可進行中的工作,或者 Git 重新設置可能會引入稍後由認可修復的損毀認可。

  • 自動安裝器install-run.js 的限制是它只會安裝一個 NPM 套件。例如,如果您的自訂指令需要多個套件 (例如 pretty-quick 驅動程式、prettier 引擎和一些 Prettier 外掛程式),則您可以將它們新增至自動安裝器的 package.json 檔案。自動安裝器通常具有小型相依性樹狀結構,因此安裝速度比 rush install 快得多。

    自動安裝器的一些潛在缺點:在需要多個自動安裝器和/或 rush install 的情況下,將會多次叫用套件管理員,並且可能需要從不同的縮減包裝檔案安裝相同的相依性。如果 rush install 可以使用集中式縮減包裝檔案一起安裝所有項目,則這可能會明顯變慢。此外,自動安裝器不會由 rush update 驗證或更新,因此它們需要額外的維護才能進行升級。

建立自動安裝器

  1. 使用 rush init-autoinstaller 指令建立資料夾

    # This creates the common/autoinstallers/my-autoinstaller/package.json file
    rush init-autoinstaller --name my-autoinstaller
  2. 編輯 my-autoinstaller/package.json 檔案以新增您的相依性。

  3. 執行 rush update-autoinstaller 來更新縮減包裝檔案。每當您修改 package.json 檔案時,都應該重做此步驟。

    # Create or update common/autoinstallers/my-autoinstaller/pnpm-lock.yaml
    # This file should be committed and tracked by Git.
    rush update-autoinstaller --name my-autoinstaller
  4. 將更新的檔案認可至 git

    git add common/autoinstallers/my-autoinstaller/

    git commit -m "Updated autoinstaller"

若要將自動安裝器與自訂指令建立關聯,請在command-line.json中的 autoinstallerName 欄位中指定其名稱。

若要將自動安裝器與 Rush 外掛程式建立關聯,請參閱建立 Rush 外掛程式文件。

維護自動安裝器

  • 若要修改自動安裝器,請編輯其 package.json 檔案。

    # This will also upgrade any indirect dependencies.
    rush update-autoinstaller --name my-autoinstaller

    # Commit the updated pnpm-lock.yaml
    git commit -m "Updated autoinstaller"
  • 若要刪除自動安裝器,只需刪除其資料夾即可

    # BE CAREFUL WHEN RECURSIVELY DELETING FOLDERS
    rm -Rf common/autoinstallers/my-autoinstaller

    # Commit the changes to Git
    git add common/autoinstallers

    git commit -m "Deleted autoinstaller"

另請參閱