当前位置: 首页 > news >正文

Eclipse Theia技术揭秘——构建桌面IDE

在上一篇文章 Eclipse Theia技术揭秘——初识Theia 简单介绍了一下Eclipse Theia这套IDE平台,这篇文章介绍一下如何基于Eclipse Theia构建桌面IDE。

Eclipse Theia Blueprint介绍

首先我们先介绍一下Eclipse Theia Blueprint这套模板,它是用于构建基于 Eclipse Theia 平台的基于桌面的产品,以及展示 Eclipse Theia 功能。它由现有 Eclipse Theia 功能和扩展的子集组成,可以轻松下载并安装在所有主要操作系统平台上。大家可以去 https://theia-ide.org/docs/blueprint_download/ 下载体验一下,它也是开源的,可以在Github上参考其代码 https://github.com/eclipse-theia/theia-blueprint 。我们可以基于这套模板去定制我们的IDE产品。

下载

我们先下载Github的代码在本地运行一下。

$ git clone git@github.com:eclipse-theia/theia-blueprint.git

工程结构

然后我们打开工程看一下目录结构。
在这里插入图片描述

在最外层目录组织结构中可以看到整个工程使用 Lerna 配置 mono-repo构建,applications下存放不同端的产品工程,比如当前electron包含应用到打包、打包配置和电子目标的 E2E 测试。theia-extensions下存放自定义的Theia扩展包,其中theia-blueprint-product包含当前自定义产品品牌的 Theia 扩展(关于对话和欢迎页面),theia-blueprint-updater包含更新机制和相关界面的Theia扩展。

接下来看一下applications下electron包中的内容。

  • resources:electron打包常用一些资源,像应用的图标。
  • scripts:存放打包使用的脚本,像签名应用程序的脚本。
  • test:存放测试脚本
  • electron-builder.yml:electron-builder打包的配置文件
  • webpack.config.js:webpack的相关配置

然后我们再安装一下依赖

$ yarn

安装依赖之后会执行package.json中的prepare脚本,我们来看一下。

在这里插入图片描述
prepare脚本会执行yarn build和yarn download:plugins,这两个脚本最终会执行theia rebuild:electron、theia build和theia download:plugins。theia这个命令是来自devDependencies配置的@theia/cli。

执行完成后会发现electron工程下新增了一些文件。

在这里插入图片描述

  • lib:构建生成的Bundle包
  • plugins:执行download:plugins时下载的插件包
  • src-gen:theia命令自动生成的工程文件
  • gen-webpack.config.js:theia自动生成的webpack配置文件,由webpack.config.js引入

运行

我们在工程根目录下执行

$ yarn electron start

启动后界面如下

在这里插入图片描述

打包

$ yarn electron package

执行完命令后,在electron目录下dist中生成安装包文件,windows是.exe安装程序,mac是.dmg安装程序。

预览

$ yarn electron package:preview

这个命令可以生成安装后的绿色版应用程序,可以直接打开不需安装。

以上就是Theia Blueprint提供的一些构建命令。

相关文章:

  • 交换机的构成以及其工作原理
  • 想换壁纸找不到高质量的?来这里用python采集上万张壁纸
  • Mybatis-Plus(核心功能篇 ==> 条件构造器
  • vue2.X+Cesium1.93Demo
  • 适配器模式【Java设计模式】
  • 聊一下接口幂等性
  • springboot源码理解十二、springMVC功能
  • 论文写作教程之学术论文中需要做好的10 件事
  • AutoAugment 学习
  • 产品经理认证(NPDP)—备考错题集二
  • R语言ggplot2可视化:使用ggpubr包的ggmaplot函数可视化MA图(MA-plot)、genenames参数配置点标签对应的基因名称
  • 程序兼容性的定义 windows7的兼容性
  • 【C#】接口的基本概念
  • 四嗪 PEG 接头 下篇:Tetrazine-PEG5-NH-CH2CH2-4-Phenol试剂
  • MySQL数据库忘记密码怎么办?教你一招
  • CAP理论的例子讲解
  • co.js - 让异步代码同步化
  • iOS 颜色设置看我就够了
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • SpringBoot 实战 (三) | 配置文件详解
  • TypeScript实现数据结构(一)栈,队列,链表
  • webpack+react项目初体验——记录我的webpack环境配置
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 解析带emoji和链接的聊天系统消息
  • 前嗅ForeSpider中数据浏览界面介绍
  • 正则与JS中的正则
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #宝哥教你#查看jquery绑定的事件函数
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (4)Elastix图像配准:3D图像
  • (附源码)php新闻发布平台 毕业设计 141646
  • (转) RFS+AutoItLibrary测试web对话框
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .net 提取注释生成API文档 帮助文档
  • .NET基础篇——反射的奥妙
  • .NET框架设计—常被忽视的C#设计技巧
  • .pyc文件是什么?
  • /dev下添加设备节点的方法步骤(通过device_create)
  • ::
  • ??在JSP中,java和JavaScript如何交互?
  • @RunWith注解作用
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(朱雀组)
  • [2023年]-hadoop面试真题(一)
  • [ASP.NET MVC]如何定制Numeric属性/字段验证消息
  • [autojs]逍遥模拟器和vscode对接
  • [C++]打开新世界的大门之C++入门
  • [EFI]MSI GF63 Thin 9SCXR电脑 Hackintosh 黑苹果efi引导文件
  • [HackMyVM]靶场Boxing
  • [HTML]Web前端开发技术12(HTML5、CSS3、JavaScript )——喵喵画网页
  • [IE编程] IE8的SDK 下载
  • [IE编程] 多页面基于IE内核浏览器的代码示例