Files
DndGamePlayer/package.json
T
Ivan Fontosh d9fbecf5a7 perf: cut ControlApp re-renders and lazy-load VFX packs
Move audio scrub/volume and brush drafts off root React ticks, coalesce overlay layout IPC, cache machine fingerprint and asset URLs, share one scene overlay host, and stop idle Pixi ticker. Also harden console against EPIPE on window load failures.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 11:58:16 +08:00

188 lines
7.2 KiB
JSON

{
"name": "TTRPGPlayer",
"version": "1.0.26",
"description": "TTRPG Player — редактор и проигрыватель НРИ",
"main": "dist/main/index.cjs",
"scripts": {
"dev": "node scripts/dev.mjs",
"build": "node scripts/build.mjs --production",
"build:dev": "node scripts/build.mjs",
"build:obfuscate": "node scripts/build.mjs --production --obfuscate",
"lint": "eslint . --max-warnings 0",
"typecheck": "tsc -p tsconfig.eslint.json --noEmit",
"test": "tsx --test app/renderer/shared/ui/controls.tooltip.test.ts app/renderer/editor/state/projectState.race.test.ts app/renderer/editor/fileDrop.test.ts app/shared/graph/sceneListOrder.test.ts app/renderer/editor/graph/sceneCardById.test.ts app/renderer/editor/i18n/editorMessages.locale.test.ts app/renderer/editor/sceneDescriptionHtml.test.ts app/shared/graph/storylineExportImport.test.ts app/shared/foundry/foundryGraph.test.ts app/shared/ipc/contracts.mediaRemoval.test.ts app/shared/effectEraserHitTest.test.ts app/shared/fieldEffectEraser.test.ts app/renderer/control/controlApp.effectsPanel.test.ts app/renderer/control/controlApp.audioPerf.networkRegression.test.ts app/renderer/control/controlApp.brushPerf.networkRegression.test.ts app/renderer/shared/useAssetImageUrl.cache.test.ts app/renderer/shared/sceneOverlay/sceneOverlayHost.test.ts app/renderer/shared/effects/PxiEffectsOverlay.pointer.test.ts app/main/windows/createWindows.editorClose.test.ts app/main/safeConsole.test.ts app/main/windows/bootWindow.test.ts app/main/effects/effectsStore.test.ts app/main/effects/sceneDarknessStore.test.ts app/main/project/assetPrune.test.ts app/main/project/optimizeImageImport.test.ts app/main/project/scenePreviewThumbnail.test.ts app/main/project/fsRetry.test.ts app/main/project/zipRead.test.ts app/main/project/replaceFileAtomic.test.ts app/main/project/zipStore.legacyContract.test.ts app/shared/package.build.test.ts app/shared/license/canonicalJson.test.ts app/shared/license/productKey.test.ts app/shared/license/licenseService.networkRegression.test.ts app/shared/video/videoPlaybackPerf.networkRegression.test.ts app/shared/video/videoPlaybackLoop.networkRegression.test.ts app/main/license/verifyLicenseToken.test.ts app/main/license/machineFingerprint.test.ts && node --test scripts/build-env.test.mjs scripts/obfuscate-main.test.mjs scripts/release-mac-prep.test.mjs",
"format": "prettier . --check",
"format:write": "prettier . --write",
"postinstall": "patch-package",
"release:info": "node scripts/print-release-info.mjs",
"pack": "npm run build && node scripts/release-win-prep.mjs && electron-builder",
"pack:dir": "npm run build && node scripts/release-win-prep.mjs && electron-builder --dir",
"pack:mac": "npm run build && node scripts/release-mac-prep.mjs && electron-builder --mac",
"pack:win": "npm run build && node scripts/release-win-prep.mjs && electron-builder --win",
"pack:linux": "node scripts/release-linux-pack.mjs",
"release": "powershell -ExecutionPolicy Bypass -File scripts/ttrpg-release/release.ps1",
"release:all": "powershell -ExecutionPolicy Bypass -File scripts/ttrpg-release/release-all.ps1",
"prepare:release": "powershell -ExecutionPolicy Bypass -File scripts/ttrpg-release/prepare-release.ps1",
"publish:updates": "powershell -ExecutionPolicy Bypass -File scripts/ttrpg-release/publish.ps1"
},
"keywords": [],
"author": "",
"license": "ISC",
"type": "module",
"dependencies": {
"@fontsource/inter": "^5.2.8",
"@tiptap/extension-placeholder": "^3.27.4",
"@tiptap/react": "^3.27.4",
"@tiptap/starter-kit": "^3.27.4",
"classic-level": "^3.0.0",
"electron-updater": "^6.6.2",
"ffmpeg-static": "^5.3.0",
"pixi.js": "^8.18.1",
"react": "^19.2.5",
"react-dom": "^19.2.5",
"reactflow": "^11.11.4",
"sharp": "^0.34.5"
},
"devDependencies": {
"@eslint/js": "^9.39.4",
"@resvg/resvg-js": "^2.6.2",
"@rollup/plugin-strip": "^3.0.4",
"@types/node": "^25.6.0",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"@types/yauzl": "^2.10.3",
"@types/yazl": "^3.3.1",
"@vitejs/plugin-react": "^6.0.1",
"babel-plugin-react-compiler": "^1.0.0",
"electron": "^41.2.0",
"electron-builder": "^26.8.1",
"esbuild": "^0.28.0",
"eslint": "^9.39.4",
"eslint-config-prettier": "^10.1.8",
"eslint-import-resolver-typescript": "^4.4.4",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-jsx-a11y": "^6.10.2",
"eslint-plugin-prettier": "^5.5.5",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-unicorn": "^64.0.0",
"javascript-obfuscator": "^4.2.2",
"patch-package": "^8.0.1",
"prettier": "^3.8.3",
"to-ico": "^1.1.2",
"tsx": "^4.21.0",
"typescript": "^6.0.2",
"typescript-eslint": "^8.58.2",
"vite": "^8.0.8",
"yauzl": "^3.3.0",
"yazl": "^3.3.1"
},
"build": {
"appId": "com.ttrpgplayer.app",
"productName": "TTRPGPlayer",
"copyright": "Copyright © TTRPGPlayer",
"directories": {
"output": "release",
"buildResources": "build"
},
"extraResources": [
{
"from": "build/icon.ico",
"to": "branding/icon.ico"
}
],
"files": [
"dist/**/*",
"package.json"
],
"asar": true,
"asarUnpack": [
"dist/preload/**",
"dist/renderer/app-pack-icon.png",
"dist/renderer/app-window-icon.png",
"node_modules/sharp/**",
"node_modules/@img/**",
"node_modules/ffmpeg-static/**",
"node_modules/classic-level/**",
"node_modules/abstract-level/**",
"node_modules/level-supports/**",
"node_modules/level-transcoder/**",
"node_modules/module-error/**",
"node_modules/buffer/**",
"node_modules/napi-macros/**"
],
"toolsets": {
"appimage": "1.0.2"
},
"mac": {
"category": "public.app-category.games",
"artifactName": "${productName}-${arch}.${ext}",
"target": [
{
"target": "dmg",
"arch": [
"x64",
"arm64"
]
},
{
"target": "zip",
"arch": [
"x64",
"arm64"
]
}
],
"icon": "build/icon.png"
},
"win": {
"target": [
{
"target": "nsis",
"arch": [
"x64"
]
},
{
"target": "zip",
"arch": [
"x64"
]
}
],
"icon": "build/icon.ico"
},
"linux": {
"target": [
{
"target": "AppImage",
"arch": [
"x64",
"arm64"
]
}
],
"category": "Game",
"maintainer": "TTRPGPlayer",
"synopsis": "TTRPG Player — tabletop RPG editor and player",
"icon": "build/icon.png"
},
"appImage": {
"artifactName": "${productName}-${arch}.${ext}"
},
"dmg": {
"artifactName": "${productName}-${arch}.${ext}"
},
"nsis": {
"oneClick": false,
"allowToChangeInstallationDirectory": true,
"deleteAppDataOnUninstall": false,
"artifactName": "${productName}-Setup.${ext}"
},
"publish": {
"provider": "generic",
"url": "https://updates.ttrpgplayer.ru/"
}
}
}