Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Fabric Apps scheidt aparte backendconfiguratie, datamodellen en frontendcode. De exacte lay-out hangt af van het sjabloon. De standaardtemplate blankapp verwijst standaard naar Universal App, een npm-werkruimte met aparte frontend-, data- en gedeelde pakketten.
Mapindeling
De standaard Universal App-basissjabloon heeft de volgende structuur:
your-project/
├── rayfin/
│ ├── .env
│ ├── rayfin.yml
│ └── tsconfig.json
├── packages/
│ ├── frontend/
│ │ ├── src/
│ │ └── package.json
│ ├── data/
│ │ └── src/index.ts
│ └── shared/
│ └── src/index.ts
├── package.json
├── tsconfig.json
└── README.md
| Location | Eigendom |
|---|---|
rayfin/ |
Backendconfiguratie en actieve omgevingswaarden. |
packages/frontend/ |
browserinterface, clientinitialisatie en frontend-build. |
packages/data/ |
Gedecoreerde runtime entity-klassen en schemaregistratie. |
packages/shared/ |
Isomorfe recordcontracten en schema-types worden gedeeld met de frontend. Plaats backendcode hier niet. |
Gegevens zijn uitgeschakeld in het basissjabloon. Schakel het in wanneer je app opgeslagen records nodig heeft:
npm run pack:add -- data-modeling
De mogelijkheid voegt een starterentiteit en een gedeeld contract toe en maakt de dataservice mogelijk. Voor het ontwerpen van entiteiten en MSSQL-dialectconfiguratie, zie Gegevensmodellen definiëren.
Alternatief voor flat-template
Sommige sjablonen en bestaande apps gebruiken een vlakke lay-out met frontendcode in root src/, entiteiten in rayfin/data/, en een schema-type map in rayfin/data/schema.ts. Deze indeling blijft geldig. Verplaats geen bestanden of maak geen dubbele pakketten alleen om met een ander sjabloon te matchen. Lees de servicepaden in rayfin/rayfin.yml om de mappen te vinden die je project daadwerkelijk genereert.
Sleutelconfiguratiebestanden
rayfin/rayfin.yml
Het bestand rayfin/rayfin.yml is het hoofdconfiguratiebestand voor uw back-end van Fabric Apps. Het bepaalt welke services worden uitgevoerd tijdens lokale ontwikkeling en ondersteunt omgevingsvariabele interpolatie voor dynamische configuratiewaarden.
De standaardwerkruimte gebruikt expliciete servicepaden. Het volgende voorbeeld toont die paden met Data ingeschakeld voor een app die een database nodig heeft:
id: my-app
name: my-app
version: 1.0.0
services:
auth:
enabled: true
allowedRedirectUris:
- http://localhost:5173
fabric:
enabled: true
externalEntraExchange: true
password:
enabled: false
data:
enabled: true
dialect: mssql
path: packages/data
buildCommand: npm run build
staticHosting:
enabled: true
path: packages/frontend
folder: dist
buildCommand: npm run build:fabric
indexDocument: index.html
assetAccess: protected
Servicewaarden path zijn relatief aan de projectwortel. Buildcommando's draaien vanuit de opgeloste servicedirectory. Functie-initialisatie registreert services.functions.path ook wanneer het een werkruimtepakket zoals packages/functions selecteert. Flatprojecten kunnen gebruikmaken van de bestaande rayfin/functions locatie. Zie Functies gebruiken.
De configuratie bevat de volgende sleutelvelden:
Velden op het hoogste niveau
| Veld | Type | Required | Beschrijving |
|---|---|---|---|
id |
string |
Ja | Projectslug wordt gebruikt als de Docker Compose-projectnaam en de Fabric-item-id. |
name |
string |
Ja | Leesbare weergavenaam van het project. |
version |
string |
Ja | Project versie (semver). |
services |
object |
Ja | Blok voor serviceconfiguratie. |
services.data
| Veld | Type | Verstek | Beschrijving |
|---|---|---|---|
enabled |
boolean |
false |
Schakel de gegevensservice in. |
dialect |
string |
— | Gebruik mssql voor een SQL-database in Fabric. Vereist wanneer Data is ingeschakeld. |
path |
string |
— | Datapakketdirectory relatief aan de hoofdmap van het project, zoals packages/data. Platte sjablonen kunnen gebruik maken van rayfin/data. |
buildCommand |
string |
— | Buildcommando voor het geconfigureerde datapakket. |
services.auth
| Veld | Type | Verstek | Beschrijving |
|---|---|---|---|
enabled |
boolean |
false |
Schakel de verificatieservice in. |
expiryInMinutes |
number |
— | Vervaltijd van JWT-token in minuten. |
customClaims |
Record<string, string> |
— | Aangepaste claims toegevoegd aan uitgegeven JWT's. |
scopes |
string[] |
— | OAuth-bereiken (bijvoorbeeld ["read:data", "write:data"]). |
refreshToken.lifetimeInDays |
number |
— | Levensduur van het vernieuwingstoken in dagen. |
allowedRedirectUris |
string[] |
["http://localhost:5173"] |
Toegestane omleidings-URI's voor callbacks voor verificatie. |
services.auth.password
| Veld | Type | Verstek | Beschrijving |
|---|---|---|---|
enabled |
boolean |
true |
E-mail- en wachtwoordverificatie inschakelen voor lokale ontwikkeling |
services.auth.fabric
| Veld | Type | Verstek | Beschrijving |
|---|---|---|---|
enabled |
boolean |
false |
Schakel Fabric brokered authentication (Microsoft Entra ID SSO) in. |
externalEntraExchange |
boolean |
— | Schakel directe gedelegeerde Entra-tokenuitwisseling en externe-ouder-host-authenticatie in wanneer ondersteund door de doelomgeving. |
services.staticHosting
| Veld | Type | Verstek | Beschrijving |
|---|---|---|---|
enabled |
boolean |
false |
Schakel hosting van statische inhoud in. |
path |
string |
— | Frontend pakketmap ten opzichte van de projectroot. |
root |
string |
— | Legacy frontend-root die wordt gebruikt door platte configuraties. |
folder |
string |
"dist" |
Map met gebouwde statische assets ten opzichte van het opgeloste frontendpad. |
buildCommand |
string |
— | Shell-opdracht die moet worden uitgevoerd voordat ze worden verpakt (bijvoorbeeld npm run build). |
indexDocument |
string |
— | Standaarddocument dat wordt geleverd voor het hoofdpad (bijvoorbeeld index.html). |
Tip
Alle tekenreekswaarden ondersteunen omgevingsvariabeleinterpolatie met ${VAR} en ${VAR:-default} syntaxis. Variabelen worden opgelost uit rayfin/.env en de shell-omgeving.
rayfin/.env
Het rayfin/.env bestand bevat de actieve runtime- en deploymentwaarden en levert waarden aan rayfin.yml via interpolatie. De CLI schrijft framework-neutrale RAYFIN_PUBLIC_* waarden voor de actieve backend. Alleen variabelen met dat voorvoegsel worden opgenomen in gegenereerde frontend-omgevingsbestanden. Plaats nooit geheimen in RAYFIN_PUBLIC_* variabelen.
Houd rayfin/.env uit versiebeheer. Gebruik rayfin/.env.example om verwachte variabelen te documenteren met plaatsaanduidingen.
rayfin/.deployments.json
Het deploymentregister registreert backend-URL's, hosting-URL's, item-ID's en workspace-ID's voor de deployments van je project. Het is geen frontend omgevingsbestand. Houd het uit het broncodebeheer. Gebruik npx rayfin up list om geregistreerde deployments weer te geven en npx rayfin up switch <name> om de actieve implementatie te wisselen en de omgevingswaarden te regenereren.
rayfin/tsconfig.json
Sjablonen bieden TypeScript-configuratie voor hun layout. Werkruimtepakketten hebben hun eigen configuraties en projectreferenties; platte sjablonen kunnen entiteiten compileren via rayfin/tsconfig.json. Behoud de referenties van de scaffold en gebruik de build- en type-checkscripts in plaats van aan te nemen dat er één rootcompilatie is.
Gegevensmodelbestanden
Houd runtime-registratie en klantgerichte types afgestemd op je gekozen layout.
Workspace-entiteiten en gedeelde contracten
In de Universele App definiëren bestanden onder packages/data/src/ gedecoreerde entiteitsklassen. Registreer de runtime-klassen in de schema array die door packages/data/src/index.ts geëxporteerd wordt.
Zorg dat overeenkomstige recordinterfaces en het type UniversalAppSchema in packages/shared/src/index.ts overeenkomen. De frontend importeert dit contract vanuit @rayfin-app/shared in plaats van gedecoreerde backendklassen te importeren.
Flat-template entiteiten
In een flat template rayfin/data/*.ts definieert entiteiten en rayfin/data/schema.ts koppelt entiteitsnamen aan types voor client.data.<Entity>. Volg het registratiemechanisme dat door dat sjabloon wordt aangeboden.
Gegenereerde artefacten
rayfin/.temp/
De rayfin/.temp/ map bevat gegenereerde backend-artefacten die worden aangemaakt wanneer u de ontwikkelserver uitvoert. Als de back-end verouderde schema's of configuraties lijkt te gebruiken, moet u de ontwikkelstack stoppen en opnieuw starten om deze bestanden opnieuw te genereren.
Important
Voer de .temp/ map niet door naar uw opslagplaats. Voeg het toe aan uw .gitignore bestand.
Front-endstructuur
De standaard frontend is in packages/frontend/src/. Platte sjablonen kunnen de root src/ gebruiken. De services.staticHosting.path instelling identificeert het frontendpakket.
Actieve omgeving en raamwerkmapping
rayfin dev en rayfin up genereren raamwerk-specifieke .env.local waarden uit rayfin/.env. Voor een geneste frontend wordt het bestand geschreven onder services.staticHosting.path, zoals packages/frontend/.env.local; platte projecten gebruiken de projectwortel.
Bron in rayfin/.env |
Vite-uitvoer in .env.local |
Next.js uitvoer in .env.local |
|---|---|---|
RAYFIN_PUBLIC_API_URL |
VITE_RAYFIN_API_URL |
NEXT_PUBLIC_RAYFIN_API_URL |
RAYFIN_PUBLIC_PUBLISHABLE_KEY |
VITE_RAYFIN_PUBLISHABLE_KEY |
NEXT_PUBLIC_RAYFIN_PUBLISHABLE_KEY |
RAYFIN_PUBLIC_ITEM_ID |
VITE_FABRIC_ITEM_ID |
NEXT_PUBLIC_FABRIC_ITEM_ID |
RAYFIN_PUBLIC_WORKSPACE_ID |
VITE_FABRIC_WORKSPACE_ID |
NEXT_PUBLIC_FABRIC_WORKSPACE_ID |
RAYFIN_PUBLIC_PORTAL_URL |
VITE_FABRIC_PORTAL_URL |
NEXT_PUBLIC_FABRIC_PORTAL_URL |
Bewerk de bronwaarden in rayfin/.env, niet het gegenereerde bestand. Om te regenereren zonder te deployen:
npx rayfin env --framework vite
Gebruik --framework nextjs of --framework plain voor andere ondersteunde mappings. Gebruik --output <dir> om een uitvoermap te kiezen of --show om de publieke mapping te inspecteren zonder te schrijven. Houd gegenereerde .env.local bestanden buiten versiebeheer.
Migreer een oudere omgevingsindeling
Oudere projecten kunnen .env.fabric- of .env.fabric-<workspace>-bestanden bevatten. Deze bestanden zijn niet de actieve omgevingsbestanden in de huidige lay-out. Voer npx rayfin up uit om de huidige omgevingsworkflow te gebruiken. Bekijk alle migratieberichten en kopieer aangepaste waarden naar rayfin/.env indien nodig. Het implementatieregister vervangt omgevingsbestanden per workspace. Configureer nieuwe apps niet zodanig dat ze ervan afhankelijk zijn.