React Native Config Schema
Architekturbewertung erforderlich: Diese Dokumentation wurde zur Unterstützung der Entwicklung gegen die "alte" oder "Legacy"-Architektur von React Native geschrieben. Sie ist möglicherweise nicht direkt auf die Entwicklung mit der neuen Architektur anwendbar und muss überprüft und möglicherweise aktualisiert werden. Informationen zu React Native-Architekturen in React Native Windows finden Sie unter Neu vs. Alt Architektur.
Der CLI-Befehl npx react-native config gibt Projekt- und Abhängigkeitskonfigurationen im JSON-Format an stdout aus.
Das Folgende beschreibt das Schema für Projekte und Abhängigkeiten, die von React Native for Windows bereitgestellt werden.
Siehe das React Native CLI Platforms-Dokument für eine Beschreibung der Schemata für iOS und Android.
Die Schemafelder sind mit den folgenden gekennzeichnet
| Tag | Beschreibung |
|---|---|
| auto | Das Element wird immer von config berechnet. Eine Überschreibungsdatei sollte es NIEMALS bereitstellen. |
| req | Das Element ist erforderlich. Wenn eine Überschreibungsdatei vorhanden ist, MUSS sie diese bereitstellen. Wenn keine Überschreibungsdatei vorhanden ist, versucht config, sie zu berechnen. |
| opt | Das Element ist optional. Wenn eine Überschreibungsdatei vorhanden ist, KANN sie diese bereitstellen. Wenn keine Überschreibungsdatei vorhanden ist, KANN config versuchen, sie zu berechnen. |
projectConfig
react-native config generiert die folgende JSON für App-Projekte, die eine Windows-Implementierung für die automatische Verknüpfung haben. Dies geschieht heuristisch, sodass App-Entwickler, wenn das Ergebnis nicht ganz korrekt ist, eine manuelle Überschreibungsdatei bereitstellen können: react-native.config.js.
Schema
{
folder: string,
sourceDir: string,
solutionFile: string,
project: {
projectFile: string,
projectName: string,
projectLang: string,
projectGuid: string,
},
}
Top-Level Fields
Das Top-Level-Objekt hat die folgenden Felder
| Feld | Typ | Tag | Beschreibung |
|---|---|---|---|
folder | string | auto | Absoluter Pfad zum Stammordner der App, bestimmt von react-native config, z. B. c:\pfad\zu\meiner-app |
sourceDir | string | req | Relativer Pfad zur Windows-Implementierung unter folder, z. B. windows |
solutionFile | string | req | Relativer Pfad zur VS-Projektmappendatei der App unter sourceDir, z. B. MeineApp.sln |
Projekt (project) | object | req | Objekt, das das VS-Projekt der App beschreibt |
useWinUI3 | boolean | opt | Wenn true, wird WinUI 3 verwendet. Wenn false, werden Windows XAML und WinUI 2 verwendet. Wenn fehlend, wird der Wert aus rnwRoot\PropertySheets\ExperimentalFeatures.props verwendet. |
experimentalFeatures | object | auto | Eigenschaften, die aus ExperimentalFeatures.props extrahiert wurden |
Project Object Fields
Das Top-Level-Objekt project hat die folgenden Felder
| Feld | Typ | Tag | Beschreibung |
|---|---|---|---|
projectFile | string | req | Relativer Pfad zur VS-Projektdatei unter sourceDir, z. B. MyApp\MyApp.vcxproj für c:\pfad\zu\meiner-app\windows\MyApp\MyApp.vcxproj |
projectName | string | auto | Name des Projekts, bestimmt aus projectFile, z. B. MyApp |
projectLang | string | auto | Sprache des Projekts, cpp (für C++) oder cs (für C#), bestimmt aus projectFile |
projectGuid | string | auto | Projekt-ID, bestimmt aus projectFile |
Beispiel react-native.config.js für MyApp
module.exports = {
project: {
windows: {
sourceDir: 'windows',
solutionFile: 'MyApp.sln',
project: {
projectFile: 'MyApp\\MyApp.vcxproj',
},
},
},
};
dependencyConfig
react-native config generiert die folgende JSON für jede native Modulabhängigkeit unter node_modules, die eine Windows-Implementierung hat, um die automatische Verknüpfung zu unterstützen. Dies geschieht heuristisch, sodass native Modulentwickler, wenn das Ergebnis nicht ganz korrekt ist, eine manuelle Überschreibungsdatei bereitstellen können: react-native.config.js.
Schema
{
folder: string,
sourceDir: string,
solutionFile: string,
projects: [
{
projectFile: string,
directDependency: bool,
projectName: string,
projectLang: string,
projectGuid: string,
cppHeaders: [],
cppPackageProviders: [],
csNamespaces: [],
csPackageProviders: []
},
],
nugetPackages: [
{
packageName: string,
packageVersion: string,
cppHeaders: [],
cppPackageProviders: [],
csNamespaces: [],
csPackageProviders: [],
},
],
}
Top-Level Fields
Das Top-Level-Objekt hat die folgenden Felder
| Feld | Typ | Tag | Beschreibung |
|---|---|---|---|
folder | string | auto | Absoluter Pfad zum Stammordner des Moduls, bestimmt von react-native config, z. B. c:\pfad\zu\app-name\node_modules\mein-modul |
sourceDir | string | opt, req, wenn Projekte definiert sind | Relativer Pfad zur Windows-Implementierung unter folder, z. B. windows |
solutionFile | string | opt | Relativer Pfad zur VS-Projektmappendatei des Moduls unter sourceDir, z. B. MeinModul.sln |
projects | array | opt | Array von VS-Projekten, die der Projektmappe der konsumierenden App hinzugefügt werden müssen, damit sie kompiliert werden |
nugetPackages | array | opt | Array von NuGet-Paketen, einschließlich nativer Module, die als Abhängigkeit zur konsumierenden App hinzugefügt werden müssen. Es kann leer sein, aber naturgemäß kann es nicht berechnet werden |
Project Object Fields
Objekte im Array projects haben die folgenden Felder
| Feld | Typ | Tag | Beschreibung |
|---|---|---|---|
projectFile | string | req | Relativer Pfad zur VS-Projektdatei unter sourceDir, z. B. MyModule\MyModule.vcxproj für c:\pfad\zu\app-name\node_modules\mein-modul\windows\MyModule\MyModule.vcxproj |
directDependency | bool | req | Ob die Projektdatei als Abhängigkeit zur Projektdatei der konsumierenden App hinzugefügt werden soll. true für Projekte, die native Module bereitstellen |
projectName | string | auto | Name des Projekts, bestimmt aus projectFile, z. B. MeinModul |
projectLang | string | auto | Sprache des Projekts, cpp oder cs, bestimmt aus projectFile |
projectGuid | string | auto | Projekt-ID, bestimmt aus projectFile |
cppHeaders | array | opt | Array von C++-Header-Include-Zeilen, z. B.: winrt/MyModule.h, die in #include <winrt/MyModule.h> umgewandelt werden |
cppPackageProviders | array | opt | Array von vollqualifizierten C++ IReactPackageProviders, z. B.: MyModule::ReactPackageProvider |
csNamespaces | array | opt | Array von C#-Namespaces, z. B.: MyModule, die in using MyModule; umgewandelt werden |
csPackageProviders | array | opt | Array von vollqualifizierten C# IReactPackageProviders, z. B.: MyModule.ReactPackageProvider |
NuGet Package Object Fields
Objekte im Array nugetPackages haben die folgenden Felder
| Feld | Typ | Tag | Beschreibung |
|---|---|---|---|
packageName | string | req | Name des NuGet-Pakets, das installiert werden soll |
packageVersion | string | req | Version des NuGet-Pakets, das installiert werden soll |
cppHeaders | array | req | Array von C++-Header-Include-Zeilen, z. B.: winrt/NugetModule.h, die in #include <winrt/NugetModule.h> umgewandelt werden |
cppPackageProviders | array | req | Array von vollqualifizierten C++ IReactPackageProviders, z. B.: NugetModule::ReactPackageProvider |
csNamespaces | array | req | Array von C#-Namespaces, z. B.: NugetModule, die in using NugetModule; umgewandelt werden |
csPackageProviders | array | req | Array von vollqualifizierten C# IReactPackageProviders, z. B.: NugetModule.ReactPackageProvider |
Beispiel react-native.config.js für MyModule
module.exports = {
dependency: {
platforms: {
windows: {
sourceDir: 'windows',
solutionFile: 'MyModule.sln',
projects: [
{
projectFile: 'MyModule\\MyModule.vcxproj',
directDependency: true,
}
],
},
},
},
};