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

常見問題 (FAQ)

我所有專案都放在一個大型儲存庫中?這樣好嗎?

答案請見這篇文章

我應該將錯誤報告或功能要求發送到哪裡?

rushstack 專案開啟一個 GitHub 問題。在您的問題標題中包含「Rush」。

在一個儲存庫中有許多專案,「npm install」會花太久時間嗎?

您可能在想:「嗯...如果我目前安裝需要 3 分鐘,而您要我將 20 個專案放在一個儲存庫中,這樣不會將我的 NPM 安裝時間乘以 60 分鐘嗎?」不會。Rush 會將您的相依性集中在「common」資料夾中,並執行「npm install」一次,安裝時間與您原始的單體應用程式基本相同。

Rush 會讓我的工具不符合標準嗎?

不會!Rush 在現有的系統和標準內運作。它只是做得更好、更快。

  • 每個專案資料夾都保持獨立 (不會模糊套件界限)
  • 仍然可以在沒有 Rush 的情況下建置任何專案;只需像往常一樣執行 pnpm installnpm run build (儘管 package.json 中的 workspace:* 參考可能需要移除)
  • 專案可以隨時移至單獨的儲存庫,而無需任何程式碼變更;沒有任何承諾!

「Rush Stack」與 Rush 相同嗎?

不同。 Rush Stack 是一組專案,由一群具有共同使命的開發人員維護,旨在為大型 TypeScript 單體儲存庫建置專業工具。Rush 是 Rush Stack 的一部分。其他部分是嚴格可選的。Rush 本身與工具鏈無關 – 它可以作為獨立工具很好地運作。如需更多詳細資料,請參閱 Rush Stack 網站。

安裝 Rush 後,為什麼我仍然看到舊版本?

這個問題並非 Rush 特有,但我們經常聽到這個問題,因為 Rush 是人們在儲存庫中開始工作時需要調用的第一個工具之一。症狀如下所示

C:\> npm install -g @microsoft/rush
C:\Program Files\nodejs\rush -> C:\Program Files\nodejs\node_modules\@microsoft\
rush\bin\rush
C:\Program Files\nodejs
`-- @microsoft/rush@3.0.1

C:\> rush
Rush Multi-Package Build Tool 2.5.0 - http://aka.ms/rush

NPM 似乎說它正在安裝 3.0.1 版,但當我們執行指令時,它顯示 Rush 2.5.0 版。這裡發生什麼事了?

問題是當您輸入像「heft」或「rush」這樣的指令時,它們會在您的系統 PATH 中找到,這可能指向先前安裝的 NodeJS 或 NPM 的資料夾。

修正方式

  1. 執行 npm ls -g --depth 0 以找出您的 NPM 套件安裝在哪裡。
  2. 執行 set 指令,並檢查您的 PATH 環境變數。
  3. 確保在 #1 的資料夾之前,您的 PATH 中沒有其他 NPM 或 NodeJS 資料夾。
  4. 從您的 PATH 中刪除任何過時的資料夾,例如來自先前安裝的 NPM、NodeJS、nodist、nvm-windows 等。
  5. 如果您先前使用過這些替代引擎之一,很可能您在硬碟上的某個地方留下一堆無用的 NPM 套件。最好找出並刪除它們。

一些尋找地點

C:\Program Files\nodejs
C:\Program Files (x86)\nodist
%APPDATA%\npm
%APPDATA%\nvm

「npm install」步驟報告網路錯誤 – 該怎麼辦?

如果您從自訂 NPM 登錄 (例如,您公司的私人伺服器或快取 Proxy) 安裝套件,則您的專案維護人員會指示您在 .npmrc 檔案中新增特殊的組態設定。如果這些設定不正確,「npm install」可能會報告令人困惑的錯誤,這些錯誤似乎表示網路故障。重要的是要了解 NPM 工具會在多個位置尋找「.npmrc」檔案 (並忽略其他位置)。

在沒有 Rush 的情況下,NPM 會在這兩個地方尋找「.npmrc」,並合併它們的內容

  • 在與您的 package.json 相同的資料夾中 (適用於在 Git 中儲存專案特定的設定)
  • 在您的使用者主目錄中 (您的驗證權杖會放在這裡)

當 Rush 調用「npm install」時,它會在這兩個地方尋找「.npmrc

  • ./common/config/rush/.npmrc」(在安裝期間會複製到「./common/temp/.npmrc」)
  • 在您的使用者主目錄中

為什麼 Rush 的 JSON 組態檔案包含 GitHub 以紅色顯示的 // 註解?

JSON 最初旨在作為機器交換格式,因此正式不支援程式碼註解。最近,JSON 作為人類編輯的組態檔案格式越來越受歡迎,這顯然需要註解。因此,大多數嚴肅的 JSON 程式庫都可以毫無問題地處理註解。(一個值得注意的例外是 JSON.parse();不要使用它 – 它無法驗證結構描述且錯誤報告不佳。)

VS Code 預設會將 JSON 註解標示為錯誤,但它提供一個可選的「JSON with comments」模式。若要啟用此模式,請在 VS Code 的 settings.json 中新增此行

"files.associations": { "*.json": "jsonc" }

GitHub 也會預設將註解標示為錯誤。若要修正此問題,您可以將此行新增至您的 .gitattributes 檔案 (您可能還需要將變更提交至受影響的檔案,以解決 GitHub 快取問題)

*.json  linguist-language=JSON-with-Comments

如需其他可能性的討論,請參閱問題 #1088

如何清除 Rush 的安裝,以避免干擾其他工具?

一般建議使用 Rush 執行所有單體儲存庫管理。Rush 在專案 node_modules 資料夾下建立的符號連結可能會混淆其他工具 (例如 NPM 或 Yarn),導致它們因預期不同的安裝模型而發生故障。不過,有時這是不可避免的。例如,當將現有儲存庫移轉為使用 Rush 時,CI 系統可能需要重複使用現有的工作資料夾,以建置使用不同安裝模型的分支。為了防止干擾,您的 CI 作業首先需要調用一個指令,從先前的安裝模型中刪除舊檔案。

對於 Yarn 或 NPM,像 git clean -dfx 這樣的指令通常就足夠了。(這會刪除檔案 – 在調用之前,請閱讀手冊!)

對於清除 Rush 安裝,不建議使用 git clean,因為它無法可靠地處理符號連結。請改用 rush purge 指令,以刪除 Rush 建立的 node_modules 資料夾。