17/1/23, 9:06 Theia - Plataforma IDE de escritorio y nube Elige un tema Build your own IDE/Tool This guide will teach you how to build your own Theia-based application. The guide will demonstrate how to configure your own application composed of existing or new Theia extensions, and any VS Code extensions you want bundled in your application by default. Please get familiar with the extension mechanisms of Theia in case you are not already. This guide describes the manual steps to build a Theia-based product, there are two ways to avoid this manual set-up: Theia Extension Yeoman generator: Generates Theia-based products along with example extensions. Theia Blueprint: A template tool for creating installable desktop applications based on Theia. We still recommend reading the manual guide first, it allows you to understand the structure of a Theia-based project. Requirements The detailed list of prerequisites is located at the main Theia repository: Prerequisites Setup Start with creating a new empty directory and moving into it: mkdir my-app cd my-app Create package.json in this directory: { "private": true, "dependencies": { "@theia/callhierarchy": "next", "@theia/file-search": "next", "@theia/git": "next", https://theia-ide.org/docs/composing_applications 1/6 17/1/23, 9:06 Theia - Plataforma IDE de escritorio y nube "@theia/markers": "next", "@theia/messages": "next", "@theia/mini-browser": "next", "@theia/navigator": "next", "@theia/outline-view": "next", "@theia/plugin-ext-vscode": "next", "@theia/preferences": "next", "@theia/preview": "next", "@theia/search-in-workspace": "next", "@theia/terminal": "next" }, "devDependencies": { "@theia/cli": "next" } } In a nutshell, Theia applications and extensions are Node.js packages. Each package has a package.json file that manifests package metadata, like name , version , its runtime and build time dependencies and so on. Let's have a look at the created package: Its name and version are omitted since we are not going to use it as a dependency, and it's marked as private since it is not going to be published as a Node.js package on its own. We've listed required extensions as runtime dependencies, e.g. @theia/navigator . Algunas extensiones requieren la instalación de herramientas adicionales; en tales casos, consulte la documentación de la extensión correspondiente. Utilice este enlace para ver todas las extensiones publicadas. Hemos enumerado @theia/cli como una dependencia de tiempo de compilación. Proporciona scripts para compilar y ejecutar la aplicación. Consumir extensiones de código VS Como parte de su aplicación, también es posible consumir (y empaquetar) extensiones de VS Code. El repositorio de Theia contiene una guía sobre cómo incluir dichas extensiones como parte del archivo package.json . Un ejemplo package.json puede parecerse al siguiente: { "private": true, "dependencies": { "@theia/callhierarchy": "next", "@theia/file-search": "next", "@theia/git": "next", "@theia/markers": "next", "@theia/messages": "next", https://theia-ide.org/docs/composing_applications 2/6 17/1/23, 9:06 Theia - Plataforma IDE de escritorio y nube "@theia/navigator": "next", "@theia/outline-view": "next", "@theia/plugin-ext-vscode": "next", "@theia/preferences": "next", "@theia/preview": "next", "@theia/search-in-workspace": "next", "@theia/terminal": "next", "@theia/vsx-registry": "next" }, "devDependencies": { "@theia/cli": "next" }, "scripts": { "prepare": "yarn run clean && yarn build && yarn run download:plugins", "clean": "theia clean", "build": "theia build --mode development", "start": "theia start --plugins=local-dir:plugins", "download:plugins": "theia download:plugins" }, "theiaPluginsDir": "plugins", "theiaPlugins": { "vscode-builtin-extensions-pack": "https://open-vsx.org/api/eclipse-theia/builti }, "theiaPluginsExcludeIds": [ "ms-vscode.js-debug-companion", "vscode.extension-editing", "vscode.git", "vscode.git-ui", "vscode.github", "vscode.github-authentication", "vscode.microsoft-authentication" ] } Las siguientes propiedades se utilizan para consumir complementos integrados (extensiones incluidas): theiaPluginsDir : la ruta relativa para implementar complementos en theiaPlugins : la colección de complementos para descargar (complementos individuales o paquetes de extensión): puede apuntar a cualquier URL de descarga válida (por ejemplo, Open VSX, Github Releases, etc.) theiaPluginsExcludeIds : la lista de complementos ids para excluir al resolver paquetes de extensión Edificio https://theia-ide.org/docs/composing_applications 3/6 17/1/23, 9:06 Theia - Plataforma IDE de escritorio y nube Primero, instale todas las dependencias. yarn En segundo lugar, use Theia CLI para construir la aplicación. yarn theia build yarn busca el theia ejecutable proporcionado por @theia/cli en el contexto de nuestra aplicación y luego ejecuta el build comando con theia . Esto puede llevar un tiempo ya que la aplicación está construida en modo de producción de forma predeterminada, es decir, ofuscada y minimizada. Corriendo Una vez finalizada la compilación, podemos iniciar la aplicación: yarn theia start --plugins=local-dir:plugins o confíe en el start script de package.json : yarn start Puede proporcionar una ruta de espacio de trabajo para abrir como primer argumento y -hostname opciones --port para implementar la aplicación en puertos e interfaces de red específicos, por ejemplo, para abrir /workspace en todas las interfaces y puertos 8080 : yarn start /my-workspace --hostname 0.0.0.0 --port 8080 En la terminal, debería ver que la aplicación Theia está activa y escuchando: Abra la aplicación ingresando la dirección impresa en una nueva página del navegador. Solución de problemas https://theia-ide.org/docs/composing_applications 4/6 17/1/23, 9:06 Theia - Plataforma IDE de escritorio y nube Los complementos no aparecen Si no hay complementos disponibles en la instancia de Theia en ejecución, es posible que deba decirle a Theia dónde encontrar los complementos descargados. El ejemplo anterior establece el --plugins interruptor en el start comando que debería ser suficiente. Sin embargo, si se ejecuta theia start directamente, puede establecer alternativamente una variable de entorno para lograr lo mismo: export THEIA_DEFAULT_PLUGINS=local-dir:plugins Construyendo dependencias nativas detrás de un proxy Si ejecuta el yarn comando detrás de un proxy, puede encontrar problemas al crear dependencias nativas (como oniguruma ), en la última parte de la compilación, con la siguiente pila de errores: [4/4] Building fresh packages... [1/9] XXXXX [2/9] XXXXX [3/9] XXXXX [4/9] XXXXX error /theiaide/node_modules/XXXXX: Command failed. Exit code: 1 Command: node-gyp rebuild Arguments: Directory: /theiaide/node_modules/XXXXX Output: gyp info gyp info gyp info gyp http gyp WARN gyp ERR! gyp ERR! gyp ERR! gyp ERR! gyp ERR! gyp ERR! gyp ERR! it worked if it ends with ok using node-gyp@3.8.0 using node@8.15.0 | linux | x64 GET https://nodejs.org/download/release/v8.15.0/node-v8.15.0-headers.tar.gz install got an error, rolling back install configure error stack Error: read ECONNRESET stack at TLSWrap.onread (net.js:622:25) System Linux 3.10.0-862.11.6.el7.x86_64 command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bi cwd /theiaide/node_modules/XXXXX node -v v8.15.0 Esto sucede porque node-gyp no depende de la configuración del proxy del sistema/NPM. En ese caso, descargue el node-headers archivo utilizando el enlace proporcionado en la pila de errores (en el ejemplo anterior https://nodejs.org/download/release/v8.15.0/node-v8.15.0headers.tar.gz ) y ejecute la compilación con el siguiente comando: npm_config_tarball=/path/to/node-v8.15.0-headers.tar.gz yarn install https://theia-ide.org/docs/composing_applications 5/6 17/1/23, 9:06 Theia - Plataforma IDE de escritorio y nube ¡Unete a la communidad! Acerca de | Política de privacidad | Condiciones de uso | Agente de derechos de autor © 2023 por Fundación Eclipse https://theia-ide.org/docs/composing_applications 6/6