Skip to content

monorepo 的 watch 能力 #324

@maoxiaoke

Description

@maoxiaoke

背景

支持 monorepo 的 watch 能力

方案

方案一:@ice/pkg 支持 monorepo 能力

  1. 使用

@ice/pkg 遵从 workspace 设计。即 root 目录 package.json 字段 workspace 作为标记所有子包。

"workspaces": [
  "packages/*"
],

亦可通过 --workspace 命令行参数指定:

# 读取 package.json workspace 字段
$ @ice/pkg build --workspace
$ @ice/pkg start --workspace

# 单独指定
$ @ice/pkg start --workspace=packages/a,packages/b
  1. 配置

若 root 存在配置文件,则以该配置文件为准;若子仓库下存在配置文件,则以可覆盖 root 下配置文件。

  1. 拓扑结构

支持依赖拓扑结构进行构建

方案二:@ice/pkg 不提供 monorepo 能力,改由其他支持 monorepo 的工具,以 pnpm 为例:

{
  "scripts": {
    "start": "pnpm -r --filter ./packages run start"
  }
}

这种方案的问题主要有:

  • 会启动多个 watcher(包括启动 log 也会存在多份)
    image

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions