Skip to content

Commit 0dff1ad

Browse files
committed
fix(ci): 修复 npm 发布时 workspace:* 协议不支持的问题
1 parent 95fbcca commit 0dff1ad

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

.github/workflows/release.yml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,44 @@ jobs:
8585
cd packages/${{ github.event.inputs.package }}
8686
pnpm run build:npm
8787
88+
- name: Resolve workspace dependencies
89+
run: |
90+
cd packages/${{ github.event.inputs.package }}/dist
91+
# Replace workspace:* with actual versions from monorepo
92+
node -e "
93+
const fs = require('fs');
94+
const path = require('path');
95+
const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
96+
97+
const resolveWorkspaceDeps = (deps) => {
98+
if (!deps) return deps;
99+
const resolved = {};
100+
for (const [name, version] of Object.entries(deps)) {
101+
if (version.startsWith('workspace:')) {
102+
// Get version from the actual package
103+
const pkgName = name.replace('@esengine/', '');
104+
const pkgPath = path.join('..', '..', pkgName, 'package.json');
105+
if (fs.existsSync(pkgPath)) {
106+
const depPkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
107+
resolved[name] = '^' + depPkg.version;
108+
} else {
109+
resolved[name] = version.replace('workspace:', '');
110+
}
111+
} else {
112+
resolved[name] = version;
113+
}
114+
}
115+
return resolved;
116+
};
117+
118+
pkg.dependencies = resolveWorkspaceDeps(pkg.dependencies);
119+
pkg.devDependencies = resolveWorkspaceDeps(pkg.devDependencies);
120+
pkg.peerDependencies = resolveWorkspaceDeps(pkg.peerDependencies);
121+
122+
fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2) + '\n');
123+
console.log('Resolved workspace dependencies');
124+
"
125+
88126
- name: Publish to npm
89127
env:
90128
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

0 commit comments

Comments
 (0)