从 monorepo 提取子项目
文档模板位于 apps/docs,依赖同一仓库中 packages/ui 提供的组件库。将文档模板用于独立项目时,需要排除内部测试文件,并将 workspace: 依赖换成已发布的版本。
示例配置选取 apps/docs,排除 src/__tests__,并指定组件库的依赖版本。
示例说明
下方只演示文件变化,不会运行命令。试用前,先替换示例仓库地址,再把 JSON 保存到命令指定的路径。
apps/docs/src/page.ts
import { Button } from '@example/ui'
export const action = Button({ label: 'Get started' })
创建命令
Bash
pnpm create preset init my-docs --from ./presets/docs.json子目录与文件排除
source.directory 设为 apps/docs 后,该目录的内容会复制到新项目根目录。packages/ui 和仓库根目录的 pnpm-workspace.yaml 不会复制。
exclude 中的路径相对于选中的目录,因此测试目录配置为 src/__tests__,不包含 apps/docs 前缀。
workspace 依赖转换
开启 packageJson.resolveWorkspace,再在 workspaceVersions 中指定 @example/ui 的版本为 1.2.3。生成后的 package.json 就会用这个版本替换 workspace:*,也无需为这个包查询 registry。
@example/ui 只是示例名称,实际使用时要换成已发布、且当前环境能安装的包和版本。这里处理的是依赖版本,packages/ui 中的组件源码不会一起复制或打包。
没有指定版本时,CLI 会通过 npm view 查询,使用 npm 当前的 registry 配置。详细规则见处理 workspace 依赖。