常見問題
我應該在全球安裝 Turborepo 嗎?
使用 Turborepo 時,您有兩個選項
- 透過
npm install --global turbo
全域安裝 - 在專案中安裝本地版本
我們建議在全球安裝 turbo
CLI。這能讓您順利、輕鬆地執行任務。如果您的專案也在 package.json 中將 turbo
作為相依性,全域 turbo
會呼叫本地的 turbo
,以確保專案中使用預期的版本。
為什麼我的全域 turbo
無法如預期運作?
如果您使用不同的套件管理員安裝,可能會在您的機器上結束時有多個版本的全域 turbo
。如果您意外執行較舊版本的 turbo
,這可能會導致意外的行為。
您可以使用以下方式快速檢查您正在使用的套件管理員版本
- macOS 和 Linux:
which turbo
- Windows:
where turbo
確保穩定的最簡單方法是執行您非首選套件管理員的解除安裝命令
npm uninstall turbo --global
我必須使用遠端快取才能使用 Turborepo 嗎?
否。遠端快取 是選配的。不過,你會發現它在加速團隊開發、加速 Docker 內部的建置,以及節省你自己的機器空間方面非常有用。
Turborepo / 遠端快取會儲存我的原始碼嗎?
否。Turborepo 沒有儲存原始碼。在沒有遠端快取的情況下,沒有任何程式碼會離開你的機器,它只會快取人工製品到本機磁碟。
使用 Turborepo 的遠端快取時,你負責設定快取行為,並且只應設定 Turborepo 快取已編譯的人工製品。請注意,Turborepo 將所有記錄視為人工製品,因此這些記錄會與其他快取人工製品一起儲存。
我必須使用 Vercel 才能使用 Turborepo 嗎?
否。Turborepo 是開源專案,不綁定任何特定主機供應商或遠端快取供應商。預設的遠端快取供應商是 Vercel,如果你選擇啟用它。不過,如果你喜歡任何其他供應商,只要他們支援相同的 API,你就可以使用它。幾個開源社群遠端快取與 Turborepo 相容。
我可以使用 Vercel 以外的其他遠端快取供應商來使用 Turborepo 嗎?
可以。只要你選擇的遠端快取供應商支援相同的 API,你就可以使用 Turborepo。
Turborepo 會收集任何個人身分資訊嗎?
由於 Turborepo 功能的性質,在本地執行開源二進位檔時不會收集任何個人資訊。預設情況下,所有快取的人工製品都儲存在你的機器上。此外,turbo
CLI 也不會收集任何登入資訊或聯絡方式,因此 Turborepo 永遠不會存取任何個人身分資訊。因此,對於任何資料隱私問題和疑慮,請參閱Turborepo 的隱私權政策。
使用遠端快取時,Turborepo 會收集任何個人可識別資訊嗎?
當 遠端快取 已啟用時,預設情況下 Turborepo 會利用您的 Vercel 帳戶快取雲端中的成品。因此,對於任何資料隱私問題和疑慮,請參閱 Turborepo 的隱私權政策 和 Vercel 的隱私權政策(在新分頁中開啟)。如果您使用不同的遠端快取提供者,請參閱該提供者的隱私權政策。
在使用多個 Next.js 應用程式時,如何保留 Turborepo 中的快速重新整理?
快速重新整理(在新分頁中開啟)可讓您即時獲得對 Next.js 應用程式中 React 元件所做編輯的回饋。
如果您的 Turborepo 有多個 Next.js 應用程式,您可以使用 transpilePackages
在 next.config.js
中,以確保跨工作區的匯入在變更時能與快速重新整理搭配使用。Turborepo 將有效監控任何編輯,並在儲存時重新建置。您可以從 這個範例(在新分頁中開啟) 開始,該範例已設定好處理快速重新整理。
next-transpile-modules
(在新分頁中開啟) 以獲得相同的快速重新整理行為。「實驗性」是什麼意思?
Turborepo 中的一些新功能標示為「實驗性」。這表示該功能尚未準備好供生產使用,且未來可能會變更。我們鼓勵您試用這些功能並提供回饋,但請注意它們未來可能會變更。
我可以將 Turborepo 與包含非 JS 程式碼的單一儲存庫搭配使用嗎?
你的單一儲存庫可以包含任何程式碼類型的子目錄(Django 應用程式、Rust 箱子、Ruby CLI 等)。Turborepo 將大致忽略這些目錄。但是,如果你想要 Turborepo 對程式碼庫的那些部分執行任何操作,你將需要
- 在你的工作空間宣告中包含這些子目錄(例如
pnpm-workspace.yaml
或workspaces
鍵在package.json
中。 - 將
package.json
檔案新增到這個目錄,已填入name
和scripts
欄位。
Turborepo 使用 Node.js 慣例來尋找工作空間和執行任務,但它不關心這些任務是什麼。