refactor: 简化项目配置,改用环境变量端口并专注 MSI 发布
- 重命名项目为 openbridgeTokenUsageViewer (camelCase 风格) - 移除 DJB2 hash 端口计算,改用 PROJECT_SERVER_PORT 环境变量 (默认 3000) - 删除 src/lib/project-port.ts 冗余模块 - 打包目标从 "all" 改为 "msi",专注 Windows 安装程序发布
This commit is contained in:
@@ -7,23 +7,18 @@ use tauri_plugin_shell::ShellExt;
|
||||
|
||||
// ===== 项目配置 =====
|
||||
|
||||
/// 项目名称 - 用于生成稳定端口和 sidecar 命名
|
||||
const PROJECT_NAME: &str = "openbridge-token-usage-viewer";
|
||||
/// Sidecar 二进制名称
|
||||
const SIDECAR_NAME: &str = "openbridgeTokenUsageViewerServer";
|
||||
|
||||
/// DJB2 Hash 算法 - 将项目名称转换为稳定端口
|
||||
fn djb2_hash(s: &str) -> u32 {
|
||||
let mut hash: u32 = 5381;
|
||||
for c in s.bytes() {
|
||||
hash = hash.wrapping_shl(5).wrapping_add(hash).wrapping_add(c as u32);
|
||||
}
|
||||
hash
|
||||
}
|
||||
/// 默认服务器端口
|
||||
const DEFAULT_PORT: u16 = 3000;
|
||||
|
||||
/// 计算项目专用端口 (范围: 10000-60000)
|
||||
/// 从环境变量获取端口 (PROJECT_SERVER_PORT),默认 3000
|
||||
fn get_project_port() -> u16 {
|
||||
const PORT_MIN: u16 = 10000;
|
||||
const PORT_RANGE: u32 = 50000;
|
||||
PORT_MIN + (djb2_hash(PROJECT_NAME) % PORT_RANGE) as u16
|
||||
std::env::var("PROJECT_SERVER_PORT")
|
||||
.ok()
|
||||
.and_then(|s| s.parse().ok())
|
||||
.unwrap_or(DEFAULT_PORT)
|
||||
}
|
||||
|
||||
// ===== 配置常量 =====
|
||||
@@ -96,7 +91,6 @@ pub fn spawn_sidecar(app_handle: tauri::AppHandle) {
|
||||
if is_dev {
|
||||
// 开发模式:直接创建窗口连接到 Vite 开发服务器
|
||||
println!("🔧 开发模式");
|
||||
println!("📌 项目: {}", PROJECT_NAME);
|
||||
println!("📌 端口: {}", project_port);
|
||||
|
||||
let dev_url = format!("http://localhost:{}", project_port);
|
||||
@@ -122,14 +116,13 @@ pub fn spawn_sidecar(app_handle: tauri::AppHandle) {
|
||||
// 生产模式:启动 sidecar 二进制
|
||||
tauri::async_runtime::spawn(async move {
|
||||
println!("🚀 生产模式");
|
||||
println!("📌 项目: {}", PROJECT_NAME);
|
||||
|
||||
// 查找可用端口 (从项目端口开始扫描)
|
||||
let port = find_available_port(project_port).await;
|
||||
println!("📌 端口: {}", port);
|
||||
|
||||
// 启动 sidecar (使用项目名称作为 sidecar 名称)
|
||||
let sidecar = match app_handle.shell().sidecar(PROJECT_NAME) {
|
||||
// 启动 sidecar
|
||||
let sidecar = match app_handle.shell().sidecar(SIDECAR_NAME) {
|
||||
Ok(cmd) => cmd.env("PORT", port.to_string()),
|
||||
Err(e) => {
|
||||
eprintln!("✗ 无法找到 sidecar: {}", e);
|
||||
|
||||
Reference in New Issue
Block a user