在單一儲存庫中分享程式碼
單一儲存庫讓您可以在應用程式之間無縫分享程式碼。為此,您將建立套件以在應用程式之間分享程式碼。
什麼是套件?
當談到單一儲存庫時,「套件」一詞具有雙重含義。它可以指以下任一項:
- 您透過套件管理員(例如
npm
)從註冊表下載到node_modules
的一組檔案。 - 包含可供應用程式之間分享的程式碼的工作區,依慣例通常位於
/packages
。
這種雙重含義對於單一儲存庫場景的新手來說可能會非常令人困惑。您可能非常熟悉套件安裝,但不太熟悉工作區。
事實上,它們非常相似。套件只是一個共享程式碼的部分。不同的是,已安裝套件存在於您的 node_modules
中,而本機套件存在於工作區中,可能在您的 /packages
資料夾中。
套件的結構
每個套件都包含一個 package.json
。您可能熟悉使用這些檔案來管理應用程式中的依賴項和腳本。
但是,您可能以前沒有注意到 name
和 exports
欄位
{
// The name of your package
"name": "my-lib",
// When this package is used, this file is what gets imported
"exports": {
".": "./src/index.ts"
},
}
這兩個欄位對於決定此套件在匯入時如何運作非常重要。例如,如果 index.js
有一些匯出
export const myFunc = () => {
console.log("Hello!");
};
我們將這個檔案匯入我們的其中一個應用程式
import { myFunc } from "my-lib";
myFunc(); // Hello!
然後我們就能在應用程式中的 my-lib
資料夾內使用程式碼。
總之,每個套件都必須在 package.json
中宣告 name
和 exports
。
package.json
中的套件解析是一個非常複雜的主題,我們無法在此處詳細說明。package.json
中的其他欄位可能會優先於 exports
,具體取決於套件的匯入方式 - 但在大部分情況下,您應該都能順利進行。
查看 Node.js 文件(在新分頁中開啟) 以取得指南。
後續步驟
我們將介紹兩種套件樣式 - 內部套件和外部套件
內部套件僅供其所在的單一儲存庫內部使用。它們的設定相對簡單,如果您的專案是封閉原始碼,它們對您來說將是最有用的。
外部套件會被綑綁並傳送到套件註冊中心。這對於設計系統、共用公用程式程式庫或任何開放原始碼作品都很有用。但是,它們會在綑綁、版本控制和發布方面帶來更多複雜性。