123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- /**
- * 全局配置
- */
- import NodePath from "path"
- import { app, screen, BrowserWindow } from "electron"
- import PKG from "../../package.json"
- class GlobalConfig {
- //#region 只读属性
- /** 是否为 Windows 平台 */
- static readonly IS_WIN32 = process.platform === "win32"
- /** 是否为 macOS 平台 */
- static readonly IS_MACOS = process.platform === "darwin"
- /** 是否为 Linux 平台 */
- static readonly IS_LINUX = process.platform === "linux"
- /** 是否为开发模式 */
- static readonly IS_DEV_MODE = !app.isPackaged
- /** 项目名称 */
- static readonly PROJECT_NAME = PKG.name
- /**
- * 源码目录
- * - dev : {project directory}/
- * - prod :
- * 1. on macOS : /Applications/{app name}.app/Contents/Resources/app?.asar
- * 2. on Linux : {installation directory}/resources/app?.asar
- * 3. on Windows : {installation directory}/resources/app?.asar
- */
- static readonly DIR_APP = app.getAppPath()
- /** 静态资源目录 */
- static readonly DIR_STATIC = NodePath.resolve(this.DIR_APP, "static")
- /** 存放资源文件的目录 */
- static readonly DIR_RESOURCES = NodePath.resolve(this.DIR_APP, this.IS_DEV_MODE ? "" : "..")
- /** 根目录/安装目录 */
- static readonly DIR_ROOT = this.IS_DEV_MODE ? this.DIR_APP : NodePath.resolve(this.DIR_RESOURCES, "..")
- /** 版本号 */
- static readonly APP_VERSION = PKG.version
- //#endregion
- /** 程序名称 */
- static getAppTitle() {
- const suffix = this.IS_DEV_MODE ? ` | v${this.APP_VERSION}` : ""
- return `${import.meta.env.VITE_APP_TITLE || this.PROJECT_NAME}${suffix}`
- }
- /** 程序图标 */
- static getAppLogo(isDocker?: boolean) {
- const logoList = {
- win32: "icons/logo_256x256.ico",
- darwin: "icons/logo_256x256.icns",
- linux: "icons/logo_256x256.png"
- }
- const type = isDocker ? "linux" : process.platform
- return NodePath.join(this.DIR_STATIC, logoList[type])
- }
- /** 运行地址/路径 */
- static getWinUrl() {
- if (this.IS_DEV_MODE) return `http://${PKG.env.host}:${PKG.env.port}`
- return NodePath.join(this.DIR_APP, "dist/index.html")
- }
- /** 本地日志路径 */
- static getLocalLogsPath() {
- return app.getPath("logs")
- }
- /** 挂载全局变量 */
- static mountGlobalVariables() {
- // 静态资源路径
- global.StaticPath = this.DIR_STATIC
- // 客户端图标
- global.ClientLogo = this.getAppLogo()
- // 客户端版本号
- global.ClientVersion = this.APP_VERSION
- }
- /** 根据分辨率适配窗口大小 */
- static adaptByScreen(dto: WinStateDTO, win: BrowserWindow | null) {
- const devSize = { width: 1920, height: 1080 }
- const areaSize = screen.getPrimaryDisplay().workAreaSize
- const zoomFactor = Math.min(1, areaSize.width / devSize.width, areaSize.height / devSize.height)
- const realSize = { width: 0, height: 0 }
- realSize.width = Math.round(dto.width * zoomFactor)
- realSize.height = Math.round(dto.height * zoomFactor)
- win?.webContents.setZoomFactor(zoomFactor)
- return realSize
- }
- }
- export default GlobalConfig
|