fix(ci): 修复 npm 发布时 workspace:* 协议不支持的问题

This commit is contained in:
yhh
2025-11-23 22:36:54 +08:00
parent 95fbcca66f
commit 0dff1ad2ad

View File

@@ -85,6 +85,44 @@ jobs:
cd packages/${{ github.event.inputs.package }} cd packages/${{ github.event.inputs.package }}
pnpm run build:npm pnpm run build:npm
- name: Resolve workspace dependencies
run: |
cd packages/${{ github.event.inputs.package }}/dist
# Replace workspace:* with actual versions from monorepo
node -e "
const fs = require('fs');
const path = require('path');
const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
const resolveWorkspaceDeps = (deps) => {
if (!deps) return deps;
const resolved = {};
for (const [name, version] of Object.entries(deps)) {
if (version.startsWith('workspace:')) {
// Get version from the actual package
const pkgName = name.replace('@esengine/', '');
const pkgPath = path.join('..', '..', pkgName, 'package.json');
if (fs.existsSync(pkgPath)) {
const depPkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
resolved[name] = '^' + depPkg.version;
} else {
resolved[name] = version.replace('workspace:', '');
}
} else {
resolved[name] = version;
}
}
return resolved;
};
pkg.dependencies = resolveWorkspaceDeps(pkg.dependencies);
pkg.devDependencies = resolveWorkspaceDeps(pkg.devDependencies);
pkg.peerDependencies = resolveWorkspaceDeps(pkg.peerDependencies);
fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2) + '\n');
console.log('Resolved workspace dependencies');
"
- name: Publish to npm - name: Publish to npm
env: env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}