Skip to content

Commit 5e32c91

Browse files
committed
chore: 修复 pnpm 配置问题
- 删除不必要的 pnpm-workspace.yaml 文件 - 将 onlyBuiltDependencies 配置移至 package.json 中的 pnpm 字段 - 添加 pnpm workspace 配置修复文档
1 parent 3d4a438 commit 5e32c91

File tree

3 files changed

+108
-3
lines changed

3 files changed

+108
-3
lines changed

.github/PNPM_WORKSPACE_FIX.md

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
# pnpm Workspace 配置修复
2+
3+
## 问题描述
4+
5+
在 GitHub Actions 中运行 `pnpm install --frozen-lockfile` 时出现错误:
6+
7+
```
8+
ERR_PNPM_INVALID_WORKSPACE_CONFIGURATION packages field missing or empty
9+
```
10+
11+
## 问题原因
12+
13+
项目中存在 `pnpm-workspace.yaml` 文件,但配置不完整:
14+
15+
```yaml
16+
# 原始配置 - 缺少必需的 packages 字段
17+
onlyBuiltDependencies:
18+
- core-js
19+
```
20+
21+
pnpm 要求 workspace 配置文件必须包含 `packages` 字段,即使是空数组也需要声明。
22+
23+
## 解决方案
24+
25+
### 方案 1:删除 workspace 配置(已采用)
26+
27+
由于这是单包项目,不需要 workspace 功能:
28+
29+
1. **删除 `pnpm-workspace.yaml` 文件**
30+
2. **将配置移到 `package.json`**:
31+
```json
32+
{
33+
"pnpm": {
34+
"onlyBuiltDependencies": ["core-js"]
35+
}
36+
}
37+
```
38+
39+
### 方案 2:修复 workspace 配置(备选)
40+
41+
如果需要保留 workspace 配置,可以这样修复:
42+
43+
```yaml
44+
# pnpm-workspace.yaml
45+
packages:
46+
- "." # 包含当前目录
47+
48+
onlyBuiltDependencies:
49+
- core-js
50+
```
51+
52+
## 验证步骤
53+
54+
1. **本地验证**:
55+
```bash
56+
pnpm install --frozen-lockfile
57+
```
58+
59+
2. **GitHub Actions 验证**:
60+
- 推送代码触发 CI
61+
- 检查 Actions 日志确认无错误
62+
63+
## 相关配置
64+
65+
### package.json 中的 pnpm 配置
66+
```json
67+
{
68+
"pnpm": {
69+
"onlyBuiltDependencies": ["core-js"]
70+
}
71+
}
72+
```
73+
74+
### GitHub Actions 工作流
75+
所有工作流中的 `pnpm install --frozen-lockfile` 命令现在都能正常工作:
76+
- `.github/workflows/ci.yml`
77+
- `.github/workflows/release.yml`
78+
- `.github/workflows/docs.yml`
79+
80+
## 最佳实践
81+
82+
### 单包项目
83+
- 不需要 `pnpm-workspace.yaml` 文件
84+
- 将 pnpm 特定配置放在 `package.json` 的 `pnpm` 字段中
85+
86+
### 多包项目(monorepo)
87+
- 必须有 `pnpm-workspace.yaml` 文件
88+
- 必须包含 `packages` 字段
89+
- 示例配置:
90+
```yaml
91+
packages:
92+
- "packages/*"
93+
- "apps/*"
94+
```
95+
96+
## 相关资源
97+
98+
- [pnpm workspace 文档](https://pnpm.io/workspaces)
99+
- [pnpm 配置文档](https://pnpm.io/package_json)
100+
- [GitHub Actions pnpm 设置](https://github.com/pnpm/action-setup)
101+
102+
## 总结
103+
104+
通过删除不必要的 `pnpm-workspace.yaml` 文件并将配置移到 `package.json`,我们解决了 GitHub Actions 中的 pnpm 配置错误,同时保持了项目的简洁性。

package.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
},
5555
"dependencies": {
5656
"decimal.js": "^10.4.1"
57-
},
57+
},g
5858
"devDependencies": {
5959
"@rslib/core": "^0.9.2",
6060
"@rspress/plugin-typedoc": "^1.43.9",
@@ -82,5 +82,8 @@
8282
"resolutions": {
8383
"esbuild": "^0.25.0"
8484
},
85+
"pnpm": {
86+
"onlyBuiltDependencies": ["core-js"]
87+
},
8588
"license": "MIT"
8689
}

pnpm-workspace.yaml

Lines changed: 0 additions & 2 deletions
This file was deleted.

0 commit comments

Comments
 (0)