Structure du répertoire du Code Source
Le code source d'Electron est séparé en plusieurs parties, principalement suivant les conventions de séparation de Chromium.
You may need to become familiar with Chromium's multi-process architecture to understand the source code better.
Project structure
Electron is a complex project containing multiple upstream dependencies, which are tracked in source control via the DEPS file. When initializing a local Electron checkout, Electron's source code is just one of many nested folders within the project root.
The project contains a single src folder that corresponds a specific git checkout of Chromium's src folder. In addition, Electron's repository code is contained in src/electron (with its own nested git repository), and other Electron-specific third-party dependencies (e.g. nan or node) are located in src/third_party (along with all other Chromium third-party dependencies, such as WebRTC or ANGLE).
For all code outside of src/electron, Electron-specific code changes are maintained via git patches. See the Patches development guide for more information.
Project Root
└── src
├── electron
├── third_party
│ ├── nan
│ ├── electron_node
│ └── ...other third party deps
└── ...other folders
Structure of Electron source code
Electron
── build/ - Construire les fichiers de configuration nécessaires pour construire avec GN.
── buildflags/ - Détermine l'ensemble des fonctionnalités qui peuvent être construites de manière conditionnelle.
── chromium_src/ - Code source copié à partir de Chromium qui ne fait pas partie de la couche de contenu.
── default_app/ - Une application par défaut exécutée lorsque Electron est démarré sans
| fournissant une application consommateur.
── docs/ - Documentation d'Electron.
| ── api/ - Documentation pour les modules et les API externes d'Electron.
| ── development/ - Documentation pour aider au développement pour et avec Electron.
| ── violondes/ - Un ensemble de snippets de code que l'on peut exécuter dans Electron Fiddle.
| ── images/ - Images utilisées dans la documentation.
| <unk> ─ tutorial/ - Documents de tutoriel pour divers aspects d'Electron.
├── lib/ - JavaScript/TypeScript source code.
| ── browser/ - Code d'initialisation du processus principal.
| | | ─ api/ - Implémentation d'API pour les modules de processus principaux.
| ── common/ - Relating to logic needed by both main and renderer process.
| | <unk> ─ api/ - Implémentation de l'API pour les modules qui peuvent être utilisés dans
| | | à la fois les processus principaux et les processus de rendu
| ── isoated_render/ - Permet la création de processus de rendu isolés lorsque
| | | contextIsolation est activée.
| ├── node/ - Initialization code for Node.js in the main process.
│ ├── preload_realm/ - Initialization code for sandboxed renderer preload scripts.
│ │ └── api/ - API implementation for preload scripts.
| ── render/ - Code d'initialisation du processus de rendu.
| | | ─ api/ - Implémentation d'API pour les modules de processus de rendu.
| | <unk> ─ web-view/ - Logique qui gère l'utilisation des webviews dans le processus
| | renderer.
| ── sandboxed_render/ - Logique qui gère la création du moteur de rendu en bac à sable
| | | processus.
| | <unk> ─ api/ - Implémentation de l'API pour les processus de rendu bac à sable.
│ ├── utility/ - Utility process initialization code.
│ │ └── api/ - API implementation for utility process modules.
| <unk> ─ worker/ - Logique qui gère les bonnes fonctionnalités de Node.js
| environnements dans les Web Workers.
── patches/ - Des correctifs appliqués au dessus des dépendances principales d'Electron
| | | afin de gérer les différences entre nos cas d'utilisation et
| | fonctionnalité par défaut.
| ── boringssl/ - Patchs appliqués au fork Google d'OpenSSL, BoringSSL.
| ── chromium/ - Patchs appliqués à Chromium.
| ── node/ - Patches appliqués au-dessus de Node.js.
| <unk> ─ v8/ - Patches appliqués au dessus du moteur V8 de Google.
── shell/ - Code source C++.
| ├── app/ - Code d'entrée du système.
| ├── browser/ - Le frontend incluent la fenêtre principale, l'UI et toutes les
| | | choses du processus principal. Ceci parle au moteur de rendu pour gérer le web
| | pages.
| | ├── ui/ - Implementation de l'UI pour différentes plateformes.
| | | ├── cocoa/ - Code Source spécifique à Cocoa.
| | | ├── win/ - Code source spécifique pour le GUI Windows.
| | | └── x/ - Code Source spécifique à X11.
| | ├── api/ - L'implementation des principales API de processus.
| | ├── net/ - Code lié au réseau.
| | ├── mac/ - Code Source Objective-C spécifique à MacOS.
| | └── resources/ - Icônes, fichiers dépendants de la plateforme, etc.
| ├── renderer/ - Code qui s'exécute dans le processus de rendu.
| | └── api/ - L'implementation des API de processus de rendu.
| ├── common/ - Code that used by both the main and renderer processes,
| | | including some helper functions and code to integrate node's
| | | message loop into Chromium's message loop.
| | └── api/ - The implementation of common APIs, and foundations of
| | Electron's built-in modules.
│ ├── services/node/ - Provides a Node.js runtime to utility processes.
│ └── utility - Code that runs in the utility process.
├── spec/ - Les composants de tests d'Electron exécutant dans le processus principal.
├── typings/ - Internal TypeScript types that aren't exported in electron.d.ts.
<unk> ─ BUILD.gn - Règles de construction d'Electron.
Structure of other Electron directories
- .github - GitHub-specific config files including issues templates, CI with GitHub Actions and CODEOWNERS.
- dist - Dossier temporaire créé par
script/create-dist.pylors de la création d'une distribution. - node_modules - Modules de Node tiers utilisés pour les builds.
- npm - Logique pour l'installation d'Electron via npm.
- out - Temporary output directory for
siso. - script - Scripts utilisés à des fins de développement comme le build, le packaging, les tests, etc.
script/ - L'ensemble de tous les scripts que Electron exécute pour une variété de fonctions.
── codesign/ - Codesign Fakes pour les applications Electron ; utilisé pour les tests.
── lib/ - Divers scripts python.
<unk> ─ release/ - Scripts exécutés pendant le processus de publication d'Electron.
── notes/ - Génère des notes de publication pour les nouvelles versions d'Electron.
<unk> ─ ─ uploaders/ - Envoie divers fichiers liés à la version pendant la sortie.
- typings - Types TypeScript pour le code interne d'Electron.