Skip to content

Latest commit

 

History

History
101 lines (69 loc) · 1.82 KB

monorepo.md

File metadata and controls

101 lines (69 loc) · 1.82 KB

Workspace

在 Monorepo 中,Workspace 指的是包含所有项目的代码仓库的工作空间。

pnpm-workspace.yaml

一个 workspace 的根目录下必须有 pnpm-workspace.yaml 文件

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/**'

命令行参数

-w

表示在workspace根目录运行命令

pnpm install react react-dom -w
#  pnpm 安装全局共用的包,-w表示把包安装在 root 下

-r

表示在工作区的每个项目中运行命令

pnpm i dayjs -r --filter @test/web

-F,--filter <package_name>

过滤允许您将命令限制于包的特定子集。

子项目的局部依赖安装

通过--filter

pnpm i axios --filter hello-world

直接进入子项目录进行安装

cd hello-world
pnpm i axios 

跨项目脚本和命令

pnpm run start --filter packageA

子项目的引用

├── packages
│   ├── ui
│   ├── utils
│   └── web

通过配置各子项package.jsonnamemain,来声明对应的包名和入口文件。(@test/ui @test/utils @test/web

安装

pnpm i @test/utils -r --filter @test/ui
# 表示在@test/ui子项中安装@test/utils这个包

使用

import {add} from '@test/utils'

强制使用特定的包管理器

以使用pnpm为例

package.json

{
  "scripts": {
    "preinstall": "npx only-allow pnpm"
  }
}