Skip to content

monorepo 的 watch 能力 #324

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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions