pnpm: 快速上手 monorepo

176 阅读1分钟

操作步骤

本文是基于 pnpm-workspace 创建的 monorepo 项目。

一、创建项目 workspace

在根目录下创建 pnpm-workspace.yaml,以设置根目录(其实就是指定哪些目录是以 monorepo 的形式管理的)。pnpm官网配置如下:

# pnpm-workspace.yaml
packages:
  # all packages in direct subdirs of packages/ # 所有前端项目存储目录
  - 'packages/*'
  # all packages in subdirs of components/ # 公共组件存储目录
  - 'components/**'
  # exclude packages that are inside test directories # 排除测试代码目录 # !表示排除
  - '!**/test/**'

二、子包实现

假设存在需将枚举类型 IpcEventEnum 提为公共项目类型。那么可以有以下步骤

子项目初始化

创建并进入以下目录 ./packages/enums

$ pnpm init

新建自定义的文件

// ./packages/enums/ipc.ts
export enum IpcEventEnum {}

设置导出

向外暴露所有导出的枚举类型

// ./packages/enums/index.ts
export * from './ipc.ts'

修改配置

./packages/package.json 中有以下配置可按需调整

  1. 包名称:子包一般为 @+命名空间/名称
  2. 主入口:一般为目录下 index.ts
  3. 包版本:建议每次代码变更,都修改版本号
{
  "name": "@sa/enums",
  "version": "1.0.0",
  "main": "index.ts"
}

三、子包使用

与普通包使用类似,下面以根项目使用为例

# 安装
$ pnpm add @sa/enums
# -----------------------

// 使用
// demo.ts
import { IpcEventEnum } from "@sa/enums"
// ...