# 策展 · X (Twitter) 🔥🔥🔥

> 📖 本站完整內容索引（documentation index）：[llms.txt](/llms.txt)

> 作者：shadcn (@shadcn) · 平台：X (Twitter) · 日期：2026-06-02

> 原始來源：https://x.com/shadcn/status/2061477029111792125

## 中文摘要

shadcn CLI 引入 GitHub 儲存庫註冊機制，簡化了程式碼與專案資產的安裝流程。

這項更新打破了傳統套件管理的限制，將「註冊機制」（Registry）的概念從封裝好的程式碼擴展至開放原始碼。開發者現在無需架設專屬伺服器或發布 JSON 檔案，只需在 GitHub 儲存庫根目錄加入 `registry.json`，即可透過 `shadcn` CLI 直接安裝各類專案資產。

**核心概念與優勢**
shadcn 指出，npm 適合用於封裝好的相依套件，而「註冊機制」則更適合用於需要被使用者與 Agent 閱讀、檢查、修改及擁有的開放程式碼。其主要特點包括：
- **廣泛的適用性**：不限於 React 元件，可分發設定檔、文件、模板、工作流程、Agent 規則、設計系統 token 等。
- **無伺服器架構**：GitHub 儲存庫本身即成為來源註冊中心，簡化了分發流程。
- **靈活的安裝方式**：支援透過 `npx shadcn@latest add <username>/<repo>/<item>` 指令進行安裝。

**實作步驟**
若要將現有儲存庫轉為註冊中心，請遵循以下流程：
1. 在儲存庫根目錄建立 `registry.json`，定義欲分發的項目（item）與檔案路徑。
2. 提交並推送檔案至 GitHub。
3. 使用 CLI 進行驗證：
   ```bash
   npx shadcn@latest registry validate <username>/<repo>
   ```
4. 使用者即可透過指令安裝：
   ```bash
   npx shadcn@latest add <username>/<repo>/<item>
   ```

**進階功能與組織方式**
- **檔案映射**：透過 `target` 欄位，可將檔案安裝至使用者專案中的特定路徑。
- **巢狀結構**：對於大型專案，可使用 `include` 欄位將多個子目錄的 `registry.json` 整合至根目錄。
- **相依性管理**：支援 `registryDependencies`，允許項目依賴同一個儲存庫或其他外部註冊中心的項目。
- **版本控制**：支援透過 `#ref`（分支、標籤或完整 commit SHA）來鎖定特定版本，例如：
  ```bash
  npx shadcn@latest add acme/toolkit/project-conventions#v1.0.0
  ```

**安全建議**
由於 GitHub 註冊項目會直接安裝程式碼與專案檔案，shadcn 強調使用者應視其為第三方相依套件，並採取以下防護措施：
- 安裝前務必審閱 `registry.json` 與項目定義中的 `files`、`target`、`dependencies`、`devDependencies`、`registryDependencies` 及 `envVars`。
- 優先使用鎖定版本的 commit SHA 以確保可重現性。
- 利用 `shadcn view` 指令檢查單一項目的 payload 內容，或在安裝前仔細審查來源儲存庫的定義。
- 針對不信任的來源，應如同對待一般第三方程式碼依賴般謹慎處理，並確認其引用的外部註冊中心內容。

## 標籤

CLI, 功能更新, 開源專案, shadcn, GitHub
