fix(ci): 修复 npm 发布时 workspace:* 协议不支持的问题
This commit is contained in:
38
.github/workflows/release.yml
vendored
38
.github/workflows/release.yml
vendored
@@ -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 }}
|
||||||
|
|||||||
Reference in New Issue
Block a user