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.
Necesitará familiarizarse con la arquitectura multiprocesos de Chromium para entender mejor el código fuente.
#
Estructura del código fuenteElectron├── 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.| | └── remote/ - Código relacionado con el modulo remote como es usado en el 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.| ├── renderer/ - Código de inicialización del proceso renderer.| | ├── api/ - Implementación de la API para los módulos del proceso renderer.| | ├── extension/ - Código relacionado con el uso de las Extenciones de Chrome| | | en el proceso renderer de Electron.| | ├── remote/ - Logic that handles use of the remote module in| | | the main process.| | └── 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.| └── 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/ - Código que se usa por ambos procesos, main y el renderer, incluye algunos funciones útiles| | y código para integrar el bucle de mensaje de node dentro de bucle de mensaje de Chromium.| └── api/ - La implementación de las APIs comunes y las bases de los módulos integrados de Electron.├── spec/ - Componentes de la suite de pruebas de Electron se ejecutan en el proceso de renderizado.├── spec-main/ - Componentes de la suite de pruebas de Electron se ejecutan en el proceso main.└── BUILD.gn - Building rules of Electron.
#
Estructura de otros directorios- .circleci - Archivo de configuración para CI con CircleCI.
- .github - Archivos de configuración específicos de GitHub, incluyendo plantillas de problemas y 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.
- afuera - temporalmente afuera del directorio de
ninja
. - 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.