@@@ANGULAR@@@ { "$schema": "./node_modules/@angular/cli/lib/config/schema.json", "version": 1, "newProjectRoot": "projects", "projects": { "kabuk": { "projectType": "application", "schematics": { "@schematics/angular:class": { "skipTests": true }, "@schematics/angular:component": { "skipTests": true }, "@schematics/angular:directive": { "skipTests": true }, "@schematics/angular:guard": { "skipTests": true }, "@schematics/angular:interceptor": { "skipTests": true }, "@schematics/angular:pipe": { "skipTests": true }, "@schematics/angular:resolver": { "skipTests": true }, "@schematics/angular:service": { "skipTests": true } }, "root": "projects/kabuk", "sourceRoot": "projects/kabuk/src", "prefix": "fiko", "architect": { "build": { "builder": "@angular-architects/native-federation:build", "options": { }, "configurations": { "production": { "target": "kabuk:esbuild:production" }, "development": { "target": "kabuk:esbuild:development", "dev": true } }, "defaultConfiguration": "production" }, "serve": { "builder": "@angular-architects/native-federation:build", "options": { "target": "kabuk:serve-original:development", "rebuildDelay": 0, "dev": true, "port": 0 } }, "extract-i18n": { "builder": "@angular-devkit/build-angular:extract-i18n" }, "test": { "builder": "@angular-devkit/build-angular:karma", "options": { "polyfills": [ "zone.js", "zone.js/testing" ], "tsConfig": "projects/kabuk/tsconfig.spec.json", "assets": [ { "glob": "**/*", "input": "projects/kabuk/public" } ], "styles": [ "projects/kabuk/src/styles.css" ], "scripts": [ ] } }, "esbuild": { "builder": "@angular-devkit/build-angular:application", "options": { "outputPath": "dist/kabuk", "index": "projects/kabuk/src/index.html", "browser": "projects/kabuk/src/main.ts", "polyfills": [ "zone.js", "es-module-shims" ], "tsConfig": "projects/kabuk/tsconfig.app.json", "assets": [ { "glob": "**/*", "input": "projects/kabuk/public" } ], "styles": [ "projects/kabuk/src/styles.css", "projects/shared/src/lib/temalar/temalar.global.less" ], "scripts": [ ] }, "configurations": { "production": { "budgets": [ { "type": "initial", "maximumWarning": "500kB", "maximumError": "1MB" }, { "type": "anyComponentStyle", "maximumWarning": "16kB", "maximumError": "32kB" } ], "outputHashing": "all" }, "development": { "optimization": false, "extractLicenses": false, "sourceMap": true } }, "defaultConfiguration": "production" }, "serve-original": { "builder": "@angular-devkit/build-angular:dev-server", "configurations": { "production": { "buildTarget": "kabuk:esbuild:production" }, "development": { "buildTarget": "kabuk:esbuild:development" } }, "defaultConfiguration": "development", "options": { "port": 4200 } } } }, "ana-uygulama": { "projectType": "application", "schematics": { "@schematics/angular:class": { "skipTests": true }, "@schematics/angular:component": { "skipTests": true }, "@schematics/angular:directive": { "skipTests": true }, "@schematics/angular:guard": { "skipTests": true }, "@schematics/angular:interceptor": { "skipTests": true }, "@schematics/angular:pipe": { "skipTests": true }, "@schematics/angular:resolver": { "skipTests": true }, "@schematics/angular:service": { "skipTests": true } }, "root": "projects/ana-uygulama", "sourceRoot": "projects/ana-uygulama/src", "prefix": "fiko", "architect": { "build": { "builder": "@angular-architects/native-federation:build", "options": { }, "configurations": { "production": { "target": "ana-uygulama:esbuild:production" }, "development": { "target": "ana-uygulama:esbuild:development", "dev": true } }, "defaultConfiguration": "production" }, "serve": { "builder": "@angular-architects/native-federation:build", "options": { "target": "ana-uygulama:serve-original:development", "rebuildDelay": 0, "dev": true, "port": 0 } }, "extract-i18n": { "builder": "@angular-devkit/build-angular:extract-i18n" }, "test": { "builder": "@angular-devkit/build-angular:karma", "options": { "polyfills": [ "zone.js", "zone.js/testing" ], "tsConfig": "projects/ana-uygulama/tsconfig.spec.json", "assets": [ { "glob": "**/*", "input": "projects/ana-uygulama/public" } ], "styles": [ "projects/ana-uygulama/src/styles.css" ], "scripts": [ ] } }, "esbuild": { "builder": "@angular-devkit/build-angular:application", "options": { "outputPath": "dist/ana-uygulama", "index": "projects/ana-uygulama/src/index.html", "browser": "projects/ana-uygulama/src/main.ts", "polyfills": [ "zone.js", "es-module-shims" ], "tsConfig": "projects/ana-uygulama/tsconfig.app.json", "assets": [ { "glob": "**/*", "input": "projects/ana-uygulama/public" } ], "styles": [ "projects/ana-uygulama/src/styles.css" ], "scripts": [ ] }, "configurations": { "production": { "budgets": [ { "type": "initial", "maximumWarning": "500kB", "maximumError": "1MB" }, { "type": "anyComponentStyle", "maximumWarning": "16kB", "maximumError": "32kB" } ], "outputHashing": "all" }, "development": { "optimization": false, "extractLicenses": false, "sourceMap": true } }, "defaultConfiguration": "production" }, "serve-original": { "builder": "@angular-devkit/build-angular:dev-server", "configurations": { "production": { "buildTarget": "ana-uygulama:esbuild:production" }, "development": { "buildTarget": "ana-uygulama:esbuild:development" } }, "defaultConfiguration": "development", "options": { "port": 4201 } } } }, "shared": { "projectType": "library", "root": "projects/shared", "sourceRoot": "projects/shared/src", "prefix": "fiko", "architect": { "build": { "builder": "@angular/build:ng-packagr", "options": { "project": "projects/shared/ng-package.json" }, "configurations": { "production": { "tsConfig": "projects/shared/tsconfig.lib.prod.json" }, "development": { "tsConfig": "projects/shared/tsconfig.lib.json" } }, "defaultConfiguration": "production" } } } }, "cli": { "analytics": false, "cache": { "enabled": false } }, "schematics": { "@schematics/angular:component": { "type": "component" }, "@schematics/angular:directive": { "type": "directive" }, "@schematics/angular:service": { "type": "service" }, "@schematics/angular:guard": { "typeSeparator": "." }, "@schematics/angular:interceptor": { "typeSeparator": "." }, "@schematics/angular:module": { "typeSeparator": "." }, "@schematics/angular:pipe": { "typeSeparator": "." }, "@schematics/angular:resolver": { "typeSeparator": "." } } } @@@PKG@@@ { "name": "fikoyt-ana", "version": "0.0.0", "scripts": { "ng": "ng", "start": "ng serve", "build": "ng build", "watch": "ng build --watch --configuration development", "test": "ng test" }, "private": true, "dependencies": { "@angular/animations": "^22.1.4", "@angular/common": "^22.1.4", "@angular/compiler": "^22.1.4", "@angular/core": "^22.1.4", "@angular/forms": "^22.1.4", "@angular/platform-browser": "^22.1.4", "@angular/platform-browser-dynamic": "^22.1.4", "@angular/router": "^22.1.4", "@angular/service-worker": "^22.1.4", "@ngrx/store": "^22.0.0", "@ngx-translate/core": "^18.0.0", "@rolldown/binding-win32-x64-msvc": "^1.1.5", "@softarc/native-federation-node": "^2.0.10", "@types/qs": "^6.15.1", "dexie": "^4.4.5", "es-module-shims": "^1.5.12", "ng-zorro-antd": "^22.0.1", "ngx-device-info": "^3.0.14", "ngx-socket-io": "^4.11.1", "qs": "^6.16.0", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" }, "devDependencies": { "@angular-architects/native-federation": "^22.1.2", "@angular-devkit/build-angular": "^22.1.6", "@angular/cli": "^22.1.6", "@angular/compiler-cli": "^22.1.4", "@oxc-parser/binding-win32-x64-msvc": "^0.147.0", "@types/jasmine": "~5.1.0", "istanbul-lib-instrument": "^6.0.3", "jasmine-core": "~5.6.0", "json5": "^2.2.3", "karma": "~6.4.0", "karma-chrome-launcher": "~3.2.0", "karma-coverage": "~2.2.0", "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "~2.1.0", "lightningcss": "^1.33.0", "lightningcss-win32-x64-msvc": "^1.33.0", "ng-packagr": "^22.1.1", "typescript": "~6.0.3" }, "allowScripts": { "esbuild": true } } @@@BASLAT@@@ @echo off chcp 65001 >nul setlocal cd /d "%~dp0" echo ============================================ echo FikoYT Federation - Baslatma Scripti echo (Live Reload aktif) echo ============================================ echo. if not exist "node_modules" ( echo [1/4] node_modules bulunamadi, bagimliliklar kuruluyor... call npm install --legacy-peer-deps --no-audit --no-fund if errorlevel 1 ( echo HATA: npm install basarisiz oldu. pause exit /b 1 ) ) else ( echo [1/4] node_modules mevcut, kurulum atlaniyor. ) echo. echo [2/4] Shared kutuphanesi derleniyor... call npx ng build shared --configuration development if errorlevel 1 ( echo HATA: shared build basarisiz oldu. pause exit /b 1 ) else ( echo Shared kutuphanesi basariyla derlendi. ) echo. echo [3/4] Ana Uygulama ^(remote, port 4201^) baslatiliyor... echo Live Reload: AKTIF start "ana-uygulama (4201)" cmd /k "cd /d "%~dp0" && npx ng serve ana-uygulama --port 4201" echo Remote'un derlenmesi icin bekleniyor... timeout /t 6 /nobreak >nul echo. echo [4/4] Kabuk ^(host, port 4200^) baslatiliyor... echo Live Reload: AKTIF start "kabuk (4200)" cmd /k "cd /d "%~dp0" && npx ng serve kabuk --port 4200" echo Host'un derlenmesi icin bekleniyor... timeout /t 8 /nobreak >nul echo. echo Tarayici aciliyor: http://localhost:4200 start "" "http://localhost:4200" echo. echo ============================================ echo Her iki sunucu da ayri pencerelerde calisiyor. echo Dosya degisikliklerinde OTOMATIK yeniden derlenir. echo Durdurmak icin o pencereleri kapatmaniz yeterli. echo Bu pencereyi kapatabilirsiniz. echo ============================================ @@@ANAFED@@@ import { withNativeFederation, shareAll } from '@angular-architects/native-federation/config'; export default withNativeFederation({ name: 'ana-uygulama', exposes: { './Component': './projects/ana-uygulama/src/app/ana-uygulama/ana-uygulama.component.ts', './Routes': './projects/ana-uygulama/src/app/app.routes.ts', }, shared: { ...shareAll({ singleton: true, strictVersion: true, requiredVersion: 'auto' }), '@ant-design/icons-angular': { singleton: true, strictVersion: true, requiredVersion: 'auto' }, // ng-zorro ikonları bu alt yolu import ediyor; alt yol shared mapping'e // girmezse tarayıcı "Unable to resolve specifier" hatası verir. '@ant-design/icons-angular/icons': { singleton: true, strictVersion: true, requiredVersion: 'auto' }, // NG0912 collision fix: cdk'nin host+remote'da iki kez yüklenmesini önle. '@angular/cdk': { singleton: true, strictVersion: true, requiredVersion: 'auto' }, '@angular/cdk/overlay': { singleton: true, strictVersion: true, requiredVersion: 'auto' }, '@angular/cdk/scrolling': { singleton: true, strictVersion: true, requiredVersion: 'auto' }, }, sharedMappings: ['@shared'], }); @@@KABUKFED@@@ import { withNativeFederation, shareAll } from '@angular-architects/native-federation/config'; export default withNativeFederation({ name: 'kabuk', shared: { ...shareAll({ singleton: true, strictVersion: true, requiredVersion: 'auto' }), '@ant-design/icons-angular': { singleton: true, strictVersion: true, requiredVersion: 'auto' }, // ng-zorro ikonları bu alt yolu import ediyor; alt yol shared mapping'e // girmezse tarayıcı "Unable to resolve specifier" hatası verir. '@ant-design/icons-angular/icons': { singleton: true, strictVersion: true, requiredVersion: 'auto' }, // NG0912 collision fix: cdk'nin host+remote'da iki kez yüklenmesini önle // (aynı kütüphaneden iki kopya aynı Component ID üretir). '@angular/cdk': { singleton: true, strictVersion: true, requiredVersion: 'auto' }, '@angular/cdk/overlay': { singleton: true, strictVersion: true, requiredVersion: 'auto' }, '@angular/cdk/scrolling': { singleton: true, strictVersion: true, requiredVersion: 'auto' }, }, // Sadece @shared tsconfig path mapping'ini paylaş; @kabuk/* ve @ana-uygulama/* // gibi uygulama-içi path'lerin otomatik paylaşılmasını engelle. sharedMappings: ['@shared'], });