用 PNPM workspaces 管理 TypeScript 多包 monorepo,统一安装构建。

PNPM 统一管理 frontend、sdk、hop-node 等包的依赖与相互链接,避免重复安装。

✓ 统一安装与构建入口✓ 可按包过滤安装构建 ✕ 单包开发需额外加参数

方案简介

Hop Protocol 是一个跨链协议,其代码以 monorepo 形式组织在 Hop Monorepo 中。仓库包含多个包:V1 的 @hop-protocol/frontend(React 前端 UI)、@hop-protocol/sdk(V1 TypeScript SDK)、@hop-protocol/hop-node(TypeScript Hop 节点),以及 V2 的 @hop-protocol/v2-sdk@hop-protocol/v2-hop-node。这套配方使用 PNPM 作为包与工作区管理工具,把多个相互依赖的 TypeScript 包放在同一仓库中统一安装、链接和构建,适合需要同时开发多个关联 npm 包的团队。

组成与分工

  • PNPM:负责包与 workspace 管理,安装依赖并在包之间建立链接
  • TypeScript:各核心包(SDK、Hop Node)的开发语言
  • React:frontend 包用于构建前端 UI
  • npm:各包以 npm 包形式发布(附 npm version 徽章)

前置要求

需要安装 PNPM 作为包管理器;仓库各包使用 TypeScript 与 Node 生态工具链开发。

实施步骤

1. 安装依赖并链接包

在仓库根目录执行:
bash
pnpm install
pnpm build

2. 清理构建产物

sh
pnpm clean

3. 按包操作(可选)

bash

Install a single package and its dependencies

pnpm --filter ... install

Build a single package and its dependencies

pnpm --filter ... build

Run a PNPM script in all packages

pnpm

使用与配置要点

所有命令都应从 monorepo 根目录运行。日常可按包过滤安装和构建,也可以用 pnpm 在所有包中运行同一脚本。验证成功的方式是根目录执行 pnpm build 能完整构建全部包。

注意事项与常见问题

如果只在单个包上开发而需要忽略其余包,安装时需要加 --include-workspace-root。这是因为安装单个包不会安装根目录的依赖,而根依赖通常是构建和 lint 所必需的:

bash
pnpm --filter ... install --include-workspace-root

优缺点

  • ✓ 统一安装与构建入口
  • ✓ 可按包过滤安装构建
  • ✕ 单包开发需额外加参数

出处

本方案挖掘自开源项目 hop-protocol/hop,方案内容与实施命令均来自其 README 原文。

方案出处
hop-protocol/hop:🐰 Hop Protocol Monorepo
2823 star 🐰 Hop Protocol Monorepo

本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。