* refactor: reorganize package structure and decouple framework packages ## Package Structure Reorganization - Reorganized 55 packages into categorized subdirectories: - packages/framework/ - Generic framework (Laya/Cocos compatible) - packages/engine/ - ESEngine core modules - packages/rendering/ - Rendering modules (WASM dependent) - packages/physics/ - Physics modules - packages/streaming/ - World streaming - packages/network-ext/ - Network extensions - packages/editor/ - Editor framework and plugins - packages/rust/ - Rust WASM engine - packages/tools/ - Build tools and SDK ## Framework Package Decoupling - Decoupled behavior-tree and blueprint packages from ESEngine dependencies - Created abstracted interfaces (IBTAssetManager, IBehaviorTreeAssetContent) - ESEngine-specific code moved to esengine/ subpath exports - Framework packages now usable with Cocos/Laya without ESEngine ## CI Configuration - Updated CI to only type-check and lint framework packages - Added type-check:framework and lint:framework scripts ## Breaking Changes - Package import paths changed due to directory reorganization - ESEngine integrations now use subpath imports (e.g., '@esengine/behavior-tree/esengine') * fix: update es-engine file path after directory reorganization * docs: update README to focus on framework over engine * ci: only build framework packages, remove Rust/WASM dependencies * fix: remove esengine subpath from behavior-tree and blueprint builds ESEngine integration code will only be available in full engine builds. Framework packages are now purely engine-agnostic. * fix: move network-protocols to framework, build both in CI * fix: update workflow paths from packages/core to packages/framework/core * fix: exclude esengine folder from type-check in behavior-tree and blueprint * fix: update network tsconfig references to new paths * fix: add test:ci:framework to only test framework packages in CI * fix: only build core and math npm packages in CI * fix: exclude test files from CodeQL and fix string escaping security issue
48 lines
1.4 KiB
JavaScript
48 lines
1.4 KiB
JavaScript
/**
|
|
* 清理开发服务器进程
|
|
* 用于 Windows 平台自动清理残留的 Vite 进程
|
|
*/
|
|
|
|
import { execSync } from 'child_process';
|
|
|
|
const PORT = 5173;
|
|
|
|
try {
|
|
console.log(`正在查找占用端口 ${PORT} 的进程...`);
|
|
|
|
// Windows 命令
|
|
const result = execSync(`netstat -ano | findstr :${PORT}`, { encoding: 'utf8' });
|
|
|
|
// 解析 PID
|
|
const lines = result.split('\n');
|
|
const pids = new Set();
|
|
|
|
for (const line of lines) {
|
|
if (line.includes('LISTENING')) {
|
|
const parts = line.trim().split(/\s+/);
|
|
const pid = parts[parts.length - 1];
|
|
if (pid && pid !== '0') {
|
|
pids.add(pid);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (pids.size === 0) {
|
|
console.log(`✓ 端口 ${PORT} 未被占用`);
|
|
} else {
|
|
console.log(`发现 ${pids.size} 个进程占用端口 ${PORT}`);
|
|
for (const pid of pids) {
|
|
try {
|
|
// Windows 需要使用 /F /PID 而不是 //F //PID
|
|
execSync(`taskkill /F /PID ${pid}`, { encoding: 'utf8', stdio: 'ignore' });
|
|
console.log(`✓ 已终止进程 PID: ${pid}`);
|
|
} catch (e) {
|
|
console.log(`✗ 无法终止进程 PID: ${pid}`);
|
|
}
|
|
}
|
|
}
|
|
} catch (error) {
|
|
// 如果 netstat 没有找到结果,会抛出错误,这是正常的
|
|
console.log(`✓ 端口 ${PORT} 未被占用`);
|
|
}
|