Files
iptvnator/package.json
T
4gray a80f3b925f feat(package): include built remote-control-web in packaged app
Add a packaging rule to copy the built remote-control-web output from
dist/apps/remote-control-web into the installer as remote-control-web.
Previously the repository included the raw source pattern
remote-control-web/**/* which did not reflect the compiled build output.
By pointing files to the dist build and filtering all files, the packaged
app now contains the production web assets instead of source files.

This fixes missing runtime assets in releases and ensures the packaged
installer includes the correct built web app for remote control.
2025-12-09 16:43:25 +01:00

258 lines
8.6 KiB
JSON

{
"name": "iptvnator",
"version": "0.17.0",
"license": "MIT",
"description": "IPTV player application.",
"homepage": "https://github.com/4gray/iptvnator",
"author": {
"name": "4gray",
"email": "fourgray@proton.me"
},
"keywords": [
"angular",
"electron",
"typescript",
"m3u",
"m3u8",
"player",
"iptv",
"video",
"tv"
],
"build": {
"appId": "com.fourgray.iptvnator",
"productName": "IPTVnator",
"artifactName": "${name}-${version}-${os}-${arch}.${ext}",
"directories": {
"buildResources": "dist/apps",
"output": "dist/executables"
},
"files": [
{
"from": "dist/apps/remote-control-web",
"to": "remote-control-web",
"filter": ["**/*"]
},
"electron-backend/**/*",
"web/**/*",
"!**/*.map"
],
"asarUnpack": [
"**/better-sqlite3/**"
],
"extraMetadata": {
"main": "electron-backend/main.js"
},
"extraResources": [
"dist/apps/electron-backend/workers"
],
"mac": {
"target": {
"target": "dmg",
"arch": [
"x64",
"arm64"
]
},
"category": "public.app-category.video",
"identity": null,
"gatekeeperAssess": false,
"hardenedRuntime": false,
"entitlements": null,
"entitlementsInherit": null,
"icon": "apps/web/src/assets/icons/favicon.icns"
},
"linux": {
"category": "Video",
"target": [
{
"target": "AppImage",
"arch": ["x64", "armv7l", "arm64"]
},
{
"target": "deb",
"arch": ["x64", "armv7l", "arm64"]
},
{
"target": "Snap",
"arch": ["x64"]
},
{
"target": "rpm",
"arch": ["x64"]
},
{
"target": "pacman",
"arch": ["x64"]
},
{
"target": "flatpak",
"arch": ["x64"]
}
],
"artifactName": "${name}-${version}-${os}-${arch}.${ext}",
"icon": "apps/web/src/assets/icons"
},
"win": {
"compression": "maximum",
"target": [
{
"target": "nsis",
"arch": [
"x64"
]
}
],
"artifactName": "${name}-${version}-windows-${arch}-setup.${ext}",
"icon": "apps/web/src/assets/icons/icon.png"
},
"nsis": {
"artifactName": "${name}-${version}-windows-${arch}-setup.${ext}"
}
},
"scripts": {
"postinstall": "electron-builder install-app-deps",
"build:frontend": "nx build web",
"build:frontend:pwa": "nx build web --configuration=pwa",
"build:backend": "nx build electron-backend",
"serve:frontend": "nx serve web --no-tui",
"serve:frontend:pwa": "nx serve web --configuration=pwa --no-tui",
"serve:backend": "nx serve electron-backend",
"test:frontend": "nx test web",
"test:backend": "nx test electron-backend",
"package:app": "nx run electron-backend:make --prepackageOnly",
"make:app": "nx run electron-backend:make"
},
"private": true,
"dependencies": {
"@angular/animations": "^20.3.10",
"@angular/cdk": "^20.2.12",
"@angular/common": "~20.3.10",
"@angular/compiler": "~20.3.10",
"@angular/core": "~20.3.10",
"@angular/forms": "~20.3.10",
"@angular/material": "^20.2.12",
"@angular/platform-browser": "~20.3.10",
"@angular/platform-browser-dynamic": "~20.3.10",
"@angular/router": "~20.3.10",
"@ngrx/component-store": "20.0.0",
"@ngrx/effects": "20.0.0",
"@ngrx/entity": "20.0.0",
"@ngrx/router-store": "20.0.0",
"@ngrx/signals": "20.0.0",
"@ngrx/store": "20.0.0",
"@ngrx/store-devtools": "20.0.0",
"@ngx-pwa/local-storage": "20.0.0",
"@rx-angular/cdk": "20.0.0",
"@rx-angular/template": "20.0.0",
"@videojs/http-streaming": "2.15.0",
"@yangkghjh/videojs-aspect-ratio-panel": "0.0.1",
"angularx-qrcode": "21.0.4",
"artplayer": "5.3.0",
"axios": "1.12.2",
"better-sqlite3": "^12.5.0",
"date-fns": "4.1.0",
"drizzle-orm": "0.44.6",
"electron-conf": "1.3.0",
"epg-parser": "0.4.0",
"fix-path": "5.0.0",
"hls.js": "1.6.13",
"iptv-playlist-parser": "github:4gray/iptv-playlist-parser",
"lodash": "4.17.21",
"moment": "2.30.1",
"ngx-indexed-db": "21.0.0",
"ngx-skeleton-loader": "11.3.0",
"rxjs": "7.8.2",
"semver": "7.7.3",
"uuid": "9.0.0",
"video.js": "8.23.4",
"videojs-contrib-quality-levels": "4.1.0",
"videojs-hls-quality-selector": "2.0.0",
"zone.js": "~0.15.1"
},
"devDependencies": {
"@angular-devkit/core": "~20.3.9",
"@angular-devkit/schematics": "~20.3.9",
"@angular-eslint/builder": "20.5.2",
"@angular-eslint/eslint-plugin": "20.5.2",
"@angular-eslint/eslint-plugin-template": "20.5.2",
"@angular-eslint/schematics": "20.5.2",
"@angular-eslint/template-parser": "20.5.2",
"@angular/build": "~20.3.9",
"@angular/cli": "~20.3.9",
"@angular/common": "20.3.10",
"@angular/compiler": "20.3.10",
"@angular/compiler-cli": "~20.3.10",
"@angular/core": "20.3.10",
"@angular/forms": "20.3.10",
"@angular/language-service": "~20.3.10",
"@angular/platform-browser": "20.3.10",
"@angular/platform-browser-dynamic": "20.3.10",
"@angular/router": "20.3.10",
"@angular/service-worker": "20.3.10",
"@eslint/eslintrc": "3.3.1",
"@eslint/js": "^9.38.0",
"@ngrx/eslint-plugin": "^20.0.0",
"@ngx-translate/core": "16.0.4",
"@ngx-translate/http-loader": "16.0.1",
"@nx/angular": "22.0.2",
"@nx/devkit": "22.0.2",
"@nx/eslint": "22.0.2",
"@nx/eslint-plugin": "22.0.2",
"@nx/jest": "22.0.2",
"@nx/js": "22.0.2",
"@nx/playwright": "22.0.2",
"@nx/web": "22.0.2",
"@nx/workspace": "22.0.2",
"@playwright/test": "^1.36.0",
"@schematics/angular": "~20.1.0",
"@semantic-release/changelog": "6.0.3",
"@semantic-release/git": "10.0.1",
"@semantic-release/npm": "12.0.1",
"@swc-node/register": "~1.9.1",
"@swc/core": "~1.5.7",
"@swc/helpers": "~0.5.11",
"@types/better-sqlite3": "^7.6.12",
"@types/jest": "^30.0.0",
"@types/lodash": "4.17.20",
"@types/mocha": "9.0.0",
"@types/node": "20.19.9",
"@types/uuid": "^10.0.0",
"@types/video.js": "7.3.29",
"@types/videojs-hls-quality-selector": "1.1.0",
"@typescript-eslint/eslint-plugin": "^8.46.2",
"@typescript-eslint/parser": "^8.46.2",
"@typescript-eslint/utils": "^8.46.2",
"angular-eslint": "20.5.2",
"conventional-changelog-cli": "5.0.0",
"drizzle-kit": "0.31.5",
"electron": "^39.0.0",
"electron-builder": "^26.0.12",
"electron-playwright-helpers": "1.8.2",
"esbuild": "0.27.0",
"eslint": "^9.8.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-import": "2.32.0",
"eslint-plugin-playwright": "^1.6.2",
"globals": "15.9.0",
"jest": "^30.0.2",
"jest-environment-jsdom": "^30.0.2",
"jest-environment-node": "^30.0.2",
"jest-preset-angular": "~15.0.0",
"jest-util": "^30.0.2",
"jsonc-eslint-parser": "^2.1.0",
"ng-mocks": "14.14.0",
"nx": "22.0.2",
"nx-electron": "^21.0.1",
"playwright": "1.56.1",
"playwright-core": "1.56.1",
"prettier": "^3.6.2",
"semantic-release": "24.2.9",
"ts-jest": "^29.4.5",
"ts-node": "10.9.2",
"tslib": "^2.8.1",
"typescript": "5.9.3",
"typescript-eslint": "^8.46.2"
}
}