儲存庫
文件
共用程式碼

在單一儲存庫中分享程式碼

單一儲存庫讓您可以在應用程式之間無縫分享程式碼。為此,您將建立套件以在應用程式之間分享程式碼。

什麼是套件?

當談到單一儲存庫時,「套件」一詞具有雙重含義。它可以指以下任一項:

  1. 您透過套件管理員(例如 npm)從註冊表下載到 node_modules 的一組檔案。
  2. 包含可供應用程式之間分享的程式碼的工作區,依慣例通常位於 /packages

這種雙重含義對於單一儲存庫場景的新手來說可能會非常令人困惑。您可能非常熟悉套件安裝,但不太熟悉工作區

事實上,它們非常相似。套件只是一個共享程式碼的部分。不同的是,已安裝套件存在於您的 node_modules 中,而本機套件存在於工作區中,可能在您的 /packages 資料夾中。

套件的結構

每個套件都包含一個 package.json。您可能熟悉使用這些檔案來管理應用程式中的依賴項和腳本。

但是,您可能以前沒有注意到 nameexports 欄位

{
  // 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 中宣告 nameexports

package.json 中的套件解析是一個非常複雜的主題,我們無法在此處詳細說明。package.json 中的其他欄位可能會優先於 exports,具體取決於套件的匯入方式 - 但在大部分情況下,您應該都能順利進行。

查看 Node.js 文件(在新分頁中開啟) 以取得指南。

後續步驟

我們將介紹兩種套件樣式 - 內部套件和外部套件

內部套件僅供其所在的單一儲存庫內部使用。它們的設定相對簡單,如果您的專案是封閉原始碼,它們對您來說將是最有用的。

外部套件會被綑綁並傳送到套件註冊中心。這對於設計系統、共用公用程式程式庫或任何開放原始碼作品都很有用。但是,它們會在綑綁、版本控制和發布方面帶來更多複雜性。