Files
CN_Tool_client/scripts/path-utils.js
yexb 8622f25048 feat(steady): 实现稳态校验任务功能重构
- 添加influxdb配置支持和资源文件打包
- 实现校验任务表格组件和相关工具函数
- 重构校验工作台为任务创建对话框模式
- 实现校验详情面板支持多种异常类型展示
- 更新校验概览表格显示任务基本信息
- 优化校验查询参数和API接口定义
- 实现搜索表单组件化和过滤功能增强
2026-06-11 10:53:02 +08:00

68 lines
1.8 KiB
JavaScript

const path = require('path');
const fs = require('fs');
/**
* 判断路径中是否包含非 ASCII 字符。
* 这里不只判断中文,其他非 ASCII 字符同样视为不安全路径。
*/
function hasNonAscii(targetPath = '') {
return /[^\x00-\x7F]/.test(targetPath);
}
/**
* 获取当前路径所在盘符根目录,例如 D:\
*/
function getDriveRoot(targetPath = '') {
const resolvedPath = path.resolve(targetPath || process.cwd());
return path.parse(resolvedPath).root;
}
function resolvePackagedRuntime() {
const resourcesPath = process.resourcesPath;
const packagedBaseDir = resourcesPath ? path.dirname(resourcesPath) : '';
const hasPackagedResources = resourcesPath
&& fs.existsSync(path.join(resourcesPath, 'extraResources'))
&& fs.existsSync(path.join(packagedBaseDir, 'mysql'));
if (hasPackagedResources) {
return {
isPackaged: true,
baseDir: packagedBaseDir,
resourcesPath
};
}
const baseDir = path.join(__dirname, '..');
return {
isPackaged: false,
baseDir,
resourcesPath: path.join(baseDir, 'build', 'extraResources')
};
}
/**
* 解析运行期路径策略。
* - 安全路径:继续直接使用应用目录
* - 非 ASCII 路径:切到英文安全路径
*/
function resolveRuntimeStrategy(baseDir) {
const normalizedBaseDir = path.resolve(baseDir);
const driveRoot = getDriveRoot(normalizedBaseDir);
const usesSafePaths = hasNonAscii(normalizedBaseDir);
return {
baseDir: normalizedBaseDir,
driveRoot,
usesSafePaths,
// 与历史客户端隔离,避免继续复用旧品牌运行目录。
safeRuntimeRoot: path.join(driveRoot, 'CN_Tool_Runtime')
};
}
module.exports = {
hasNonAscii,
getDriveRoot,
resolvePackagedRuntime,
resolveRuntimeStrategy
};