feat(tools): bump-cocos 批量升级引擎版本字段
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
#!/usr/bin/env node
|
||||
import { join } from 'node:path';
|
||||
import { readFileSync, writeFileSync } from 'node:fs';
|
||||
import { pathToFileURL } from 'node:url';
|
||||
import { HOST_PROJECT, GAMES_DIR, listGameProjects } from './lib/paths.mjs';
|
||||
|
||||
// 批量把若干工程的 creator.version 改为 version,返回每个工程的 from/to
|
||||
export function bumpVersion(projectDirs, version) {
|
||||
const changed = [];
|
||||
for (const dir of projectDirs) {
|
||||
const pkgPath = join(dir, 'package.json');
|
||||
const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
|
||||
if (!pkg.creator) pkg.creator = {};
|
||||
const from = pkg.creator.version ?? null;
|
||||
pkg.creator.version = version;
|
||||
writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n');
|
||||
changed.push({ dir, from, to: version });
|
||||
}
|
||||
return changed;
|
||||
}
|
||||
|
||||
// CLI 入口:bump 宿主 + 所有子游戏到指定版本
|
||||
if (import.meta.url === pathToFileURL(process.argv[1]).href) {
|
||||
const version = process.argv[2];
|
||||
if (!version) {
|
||||
console.error('用法: npm run bump-cocos <version> 例: npm run bump-cocos 3.8.9');
|
||||
process.exit(1);
|
||||
}
|
||||
const targets = [HOST_PROJECT, ...listGameProjects(GAMES_DIR)];
|
||||
const changed = bumpVersion(targets, version);
|
||||
for (const c of changed) {
|
||||
console.log(`${c.dir}: ${c.from} → ${c.to}`);
|
||||
}
|
||||
console.log('\n⚠️ 仍需用新版 Cocos Creator 逐个打开各工程执行迁移(library 重建)。');
|
||||
}
|
||||
Reference in New Issue
Block a user