mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-14 21:26:15 -08:00
Plan item C6 step 5. app.config.ts provides provideZonelessChangeDetection() directly and apps/web builds without the zone.js polyfill, so a tick runs only when a signal, markForCheck, an Angular event or a render hook asks for one, not after every macrotask. The flag from #1824 (change-detection.providers*.ts and the *-zoneless configurations) goes away; a build-config test fails if the polyfill or a zone provider comes back. NgZone.run/runOutsideAngular calls that only mattered with zone.js are removed from the dashboard data services, the settings unload guard and the embedded MPV position poll (with the spec case asserting it), and the unused polyfills.ts, polyfills-test.ts and setup-jest.ts are deleted. Unit tests keep zone.js/testing for fakeAsync and waitForAsync; apps/remote-control-web still bootstraps with zone.js. renderer.initialBytes: 1,596,201 -> 1,545,931 bytes (-50,270) on a local production build of this base; the baseline is lowered to the measured value. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
235 lines
8.4 KiB
JSON
235 lines
8.4 KiB
JSON
{
|
|
"name": "web",
|
|
"$schema": "../../node_modules/nx/schemas/project-schema.json",
|
|
"projectType": "application",
|
|
"prefix": "app",
|
|
"sourceRoot": "apps/web/src",
|
|
"cli": {
|
|
"cache": {
|
|
"enabled": false
|
|
}
|
|
},
|
|
"tags": ["scope:app", "domain:web", "type:app"],
|
|
"targets": {
|
|
"build": {
|
|
"executor": "@angular/build:application",
|
|
"outputs": ["{workspaceRoot}/dist/apps/web"],
|
|
"options": {
|
|
"outputPath": {
|
|
"base": "dist/apps/web",
|
|
"browser": ""
|
|
},
|
|
"tsConfig": "apps/web/tsconfig.app.json",
|
|
"inlineStyleLanguage": "scss",
|
|
"serviceWorker": "ngsw-config.json",
|
|
"assets": [
|
|
"apps/web/src/favicon.ico",
|
|
"apps/web/src/assets",
|
|
"apps/web/src/manifest.webmanifest"
|
|
],
|
|
"styles": [
|
|
"apps/web/src/styles.scss",
|
|
"apps/web/src/m3-theme.scss",
|
|
"./node_modules/video.js/dist/video-js.css"
|
|
],
|
|
"allowedCommonJsDependencies": [
|
|
"qrcode",
|
|
"iptv-playlist-parser",
|
|
"mpegts.js",
|
|
"videojs-contrib-quality-levels",
|
|
"videojs-quality-selector-hls",
|
|
"global/window",
|
|
"global/document",
|
|
"@videojs/xhr",
|
|
"videojs-vtt.js",
|
|
"mux.js/lib/tools/parse-sidx",
|
|
"mux.js/lib/utils/clock",
|
|
"keycode",
|
|
"safe-json-parse/tuple",
|
|
"@xmldom/xmldom",
|
|
"url-toolkit"
|
|
]
|
|
},
|
|
"configurations": {
|
|
"production": {
|
|
"baseHref": "./",
|
|
"budgets": [
|
|
{
|
|
"type": "initial",
|
|
"maximumWarning": "1.8mb",
|
|
"maximumError": "2mb"
|
|
},
|
|
{
|
|
"type": "anyComponentStyle",
|
|
"maximumWarning": "12.5kb",
|
|
"maximumError": "15kb"
|
|
}
|
|
],
|
|
"optimization": {
|
|
"scripts": true,
|
|
"styles": {
|
|
"minify": true,
|
|
"inlineCritical": false,
|
|
"removeSpecialComments": true
|
|
},
|
|
"fonts": true
|
|
},
|
|
"outputHashing": "all",
|
|
"fileReplacements": [
|
|
{
|
|
"replace": "apps/web/src/environments/environment.ts",
|
|
"with": "apps/web/src/environments/environment.prod.ts"
|
|
}
|
|
]
|
|
},
|
|
"pwa": {
|
|
"baseHref": "/",
|
|
"budgets": [
|
|
{
|
|
"type": "initial",
|
|
"maximumWarning": "1.8mb",
|
|
"maximumError": "2mb"
|
|
},
|
|
{
|
|
"type": "anyComponentStyle",
|
|
"maximumWarning": "12.5kb",
|
|
"maximumError": "15kb"
|
|
}
|
|
],
|
|
"outputHashing": "all",
|
|
"optimization": {
|
|
"scripts": true,
|
|
"styles": {
|
|
"minify": true,
|
|
"inlineCritical": false,
|
|
"removeSpecialComments": true
|
|
},
|
|
"fonts": true
|
|
},
|
|
"extractLicenses": true,
|
|
"sourceMap": false,
|
|
"fileReplacements": [
|
|
{
|
|
"replace": "apps/web/src/environments/environment.ts",
|
|
"with": "apps/web/src/environments/environment.prod.ts"
|
|
}
|
|
]
|
|
},
|
|
"development": {
|
|
"serviceWorker": false,
|
|
"optimization": false,
|
|
"extractLicenses": false,
|
|
"sourceMap": true,
|
|
"fileReplacements": [
|
|
{
|
|
"replace": "apps/web/src/environments/store-devtools.providers.ts",
|
|
"with": "apps/web/src/environments/store-devtools.providers.dev.ts"
|
|
}
|
|
]
|
|
},
|
|
"electron-performance": {
|
|
"baseHref": "./",
|
|
"serviceWorker": false,
|
|
"optimization": {
|
|
"scripts": true,
|
|
"styles": {
|
|
"minify": true,
|
|
"inlineCritical": false,
|
|
"removeSpecialComments": true
|
|
},
|
|
"fonts": true
|
|
},
|
|
"outputHashing": "all",
|
|
"sourceMap": true,
|
|
"fileReplacements": [
|
|
{
|
|
"replace": "apps/web/src/environments/environment.ts",
|
|
"with": "apps/web/src/environments/environment.performance.ts"
|
|
}
|
|
]
|
|
},
|
|
"electron-e2e": {
|
|
"baseHref": "./",
|
|
"serviceWorker": false,
|
|
"optimization": false,
|
|
"extractLicenses": false,
|
|
"sourceMap": true,
|
|
"fileReplacements": [
|
|
{
|
|
"replace": "apps/web/src/environments/store-devtools.providers.ts",
|
|
"with": "apps/web/src/environments/store-devtools.providers.dev.ts"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"defaultConfiguration": "production"
|
|
},
|
|
"build-e2e": {
|
|
"executor": "nx:run-commands",
|
|
"options": {
|
|
"command": "pnpm nx run web:build:electron-e2e"
|
|
}
|
|
},
|
|
"build-performance": {
|
|
"executor": "nx:run-commands",
|
|
"options": {
|
|
"command": "pnpm nx run web:build:electron-performance"
|
|
}
|
|
},
|
|
"serve": {
|
|
"continuous": true,
|
|
"executor": "@angular/build:dev-server",
|
|
"configurations": {
|
|
"production": {
|
|
"buildTarget": "web:build:production"
|
|
},
|
|
"pwa": {
|
|
"buildTarget": "web:build:pwa"
|
|
},
|
|
"development": {
|
|
"buildTarget": "web:build:development"
|
|
}
|
|
},
|
|
"defaultConfiguration": "development",
|
|
"options": {
|
|
"proxyConfig": "apps/web/proxy.conf.json"
|
|
}
|
|
},
|
|
"extract-i18n": {
|
|
"executor": "@angular/build:extract-i18n",
|
|
"options": {
|
|
"buildTarget": "web:build"
|
|
}
|
|
},
|
|
"lint": {
|
|
"executor": "@nx/eslint:lint"
|
|
},
|
|
"test": {
|
|
"executor": "nx:run-commands",
|
|
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
|
|
"options": {
|
|
"command": [
|
|
"node",
|
|
"./node_modules/jest/bin/jest.js",
|
|
"--config",
|
|
"apps/web/jest.config.ts"
|
|
],
|
|
"env": {
|
|
"NODE_OPTIONS": "--experimental-vm-modules"
|
|
},
|
|
"forwardAllArgs": true
|
|
}
|
|
},
|
|
"serve-static": {
|
|
"continuous": true,
|
|
"executor": "@nx/web:file-server",
|
|
"options": {
|
|
"buildTarget": "web:build:pwa",
|
|
"port": 4200,
|
|
"staticFilePath": "dist/apps/web",
|
|
"spa": true
|
|
}
|
|
}
|
|
}
|
|
}
|