Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【前端工程化】Monorepo 方案调研 - workspace - 02 #30

Open
leviosa-e opened this issue Jun 6, 2024 · 0 comments
Open

【前端工程化】Monorepo 方案调研 - workspace - 02 #30

leviosa-e opened this issue Jun 6, 2024 · 0 comments

Comments

@leviosa-e
Copy link
Owner

leviosa-e commented Jun 6, 2024

支持 workspaces 特性的 package manager,一般用于 Monorepo 中的依赖安装。
目前前端最常用的 PackageManager 有npm、yarn、pnpm,对 workspaces 特性都有一定的支持:

  • npm:npm 从 v7 开始支持 workspaces,从 node 15 开始内置 npm7;
  • yarn:已经稳定支持 workspaces;
  • pnpm:已经稳定支持workspaces。

有了workspaces的加持,我们在管理 monorepo 子项目可以更加方便。
拿 pnpm 的 workspace 举例:
通过在根目录增加 pnpm-workspace.yaml 来定义具体的工作空间:

packages:
  - apps/**
  - features/**
  - packages/**
  - services/**

通过 pnpm 提供的过滤标志(--filter)我们可以指定运行所有子项目的命令 (pnpm dev) / 某一子项目的命令(pnpm dev --filter dev)。

在 workspaces 模式下,package manager 会分析整个 Monorepo 下的所有 workspace ,对所有 workspace 统一安装外部依赖,并且 link 依赖的本地 workspace 到 node_modules 下。

Q:pnpm 的 Workspace 应该如何配置?

pnpm 的 Workspace 可以按照以下步骤进行配置:

  1. 创建工作空间: 在项目根目录下创建一个用于存放所有子项目或包的文件夹,通常命名为 "packages" 或 "workspaces"。
  2. 配置工作空间: 在项目根目录下创建一个名为 pnpm-workspace.yaml 的文件,在这个文件中列出你的所有工作空间。例如:
packages:
- 'packages/*'

在这个配置中,'packages/*' 告诉 pnpm,你的工作空间位于 'packages' 文件夹中。

  1. 安装依赖: 在根目录下运行 pnpm install 命令,pnpm 会自动在每个工作空间中安装其 package.json 文件中列出的依赖。

每个工作空间都是独立的,它有自己的 package.json 文件,你可以在每个工作空间中独立安装和管理依赖。

@leviosa-e leviosa-e changed the title 1 【前端工程化】Monorepo 方案调研 - workspace - 02 Jun 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant