Saltar al contenido principal

Estructura del directorio de código fuente

El código fuente de Electron está separado en unas pocas partes, la mayoría siguiendo a Chromium en las convenciones de separación.

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/ - Archivos de configuración necesarios para compilar con GN.
├── buildflags/ - Determina el conjunto de características que pueden ser compiladas condicionalmente.
├── chromium_src/ - Código fuente copiado desde Chromium que no es parte de la capa de contenido.
├── default_app/ - Una aplicación predeterminada se ejecuta cuando se inicia Electron sin proveer
| una aplicación de consumo.
├── docs/ - Documentación de Electron.
| ├── api/ - Documentación para modulos y APIs externas.
| ├── development/ - Documentación para ayudar en el desarrollo para y con Electron.
| ├── fiddles/ - Un conjunto de fragmento de codigo que pueden ejecutarse en Electron Fiddle.
| ├── images/ - Imágenes usadas en la documentación.
| └── tutorial/ - Documentos tutoriales para diversos aspectos de Electron.
├── lib/ - Código fuente JavaScript/TypeScript.
| ├── browser/ - Código de inicialización del proceso principal.
| | ├── api/ - API de implementación para los módulos del proceso principal.
| ├── common/ - Relacionado con la logica necesario por ambos procesos el main y el renderer.
| | └── api/ - Implementación de API para módulos que pueden
| | ser usadas en ambos procesos main y renderer
| ├── isolated_renderer/ - Maneja la creación de procesos renderer isolados cuando
| | contextIsolation esta habilitado.
| ├── 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.
| ├── renderer/ - Código de inicialización del proceso renderer.
| | ├── api/ - Implementación de la API para los módulos del proceso renderer.
| | └── web-view/ - Lógica que maneja el uso de los webviews en el
| | proceso renderer.
| ├── sandboxed_renderer/ - Lógica que maneja la creación de procesos
| | | renderer sandboxed.
| | └── api/ - Implementación para procesos renderer sandboxed.
│   ├── utility/ - Utility process initialization code.
│   │   └── api/ - API implementation for utility process modules.
| └── worker/ - Lógica que maneja la correcta funcionalidad de Node.js
| en los entornos Web Workers.
├── patches/ - Parches aplicados encima de las dependencias core
| | de Electron para manejar las diferencias ente nuestro casos de uso
| | y la configuración por defecto.
| ├── boringssl/ - Parches aplicados a los forks de Google OpenSSL, BoringSSL.
| ├── chromium/ - Parches aplicados a Chromium.
| ├── node/ - Parches aplicados encima de Node.js.
| └── v8/ - Parches aplicados encima del motor V8 de Google.
├── shell/ - Código fuente C++.
| ├── app/ - System entry code.
| ├── browser/ - The frontend including the main window, UI, and all of the
| | | main process things. This talks to the renderer to manage web
| | | pages.
| | ├── ui/ - Implementation of UI stuff for different platforms.
| | | ├── cocoa/ - Cocoa specific source code.
| | | ├── win/ - Windows GUI specific source code.
| | | └── x/ - X11 specific source code.
| | ├── api/ - The implementation of the main process APIs.
| | ├── net/ - Network related code.
| | ├── mac/ - Mac specific Objective-C source code.
| | └── resources/ - Icons, platform-dependent files, etc.
| ├── renderer/ - Code that runs in renderer process.
| | └── api/ - The implementation of renderer process APIs.
| ├── 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-main/ - Componentes de la suite de pruebas de Electron se ejecutan en el proceso primario.
├── typings/ - Internal TypeScript types that aren't exported in electron.d.ts.
└── BUILD.gn - Building rules of Electron.

Structure of other Electron directories

  • .github - GitHub-specific config files including issues templates, CI with GitHub Actions and CODEOWNERS.
  • dist - Directorio temporal creado por el comando script/create-dist.py cuando se crea una distribución.
  • Nodos de módulo - Nodos de módulo de terceros usados para compilar.
  • npm - Lógica para la instalación de Electron via npm.
  • out - Temporary output directory for siso.
  • Código - Los códigos usados con propósitos de desarrollo como compilar, empacar, probar, etc.
script/ - El conjunto de todo los scripts que Electron ejecuta para una variedad de propósitos.
├── codesign/ - Falsifica la firma de código para aplicaciones Electron; usado para pruebas.
├── lib/ - Varios scripts de utilidad de python.
└── release/ - Scripts que se ejecutan durante el proceso de lanzamiento de Electron.
├── notes/ - Genera notas de lanzamiento para las nuevas versiones de Electron.
└── uploaders/ - Sube varios archivos relacionados con la nueva versión durante el lanzamiento.
  • typings - Tipos de TypeScript para el código interno de Electron.