上一篇:Theia架构

构建你自己的IDE

  本指南将教你如何构建你自己的Theia应用。

必要条件

  你需要安装node 10版本(译者:事实上最新的node稳定版即可):

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.5/install.sh | bash
nvm install

  以及yarn:

npm install -g yarn

  还需要确保已安装python 2.x,可通过python --version来检查。

安装

  首先请创建一个空目录,然后切换到这个目录下:

mkdir my-app
cd my-app

  在这个目录下创建package.json:

{
"private": true,
"dependencies": {
"typescript": "latest",
"@theia/typescript": "next",
"@theia/navigator": "next",
"@theia/terminal": "next",
"@theia/outline-view": "next",
"@theia/preferences": "next",
"@theia/messages": "next",
"@theia/git": "next",
"@theia/file-search": "next",
"@theia/markers": "next",
"@theia/preview": "next",
"@theia/callhierarchy": "next",
"@theia/merge-conflicts": "next",
"@theia/search-in-workspace": "next",
"@theia/json": "next",
"@theia/textmate-grammars": "next",
"@theia/mini-browser": "next"
},
"devDependencies": {
"@theia/cli": "next"
}
}

  简而言之,Theia应用程序和扩展包都是Node.js包。每一个包都包含一个package.json文件,里面列出了包的一些元数据,如name、version、运行时和构建时的依赖关系等。

  我们来看看这个包的内容:
  • name和version被省略了,因为我们不打算将它作为一个依赖项来使用。同时它被标记为private,因为不打算将它发布为一个独立的Node.js包。
  • 我们在dependencies中列出了所有运行时依赖的扩展包,如@theia/navigator。
  • 我们将@theis/cli列为构建时的依赖项,它提供了构建和运行应用程序的脚本。

构建

  首先,安装所有的依赖项。

yarn

  然后,使用Theia CLI来构建应用程序。

yarn theia build

  yarn在我们应用程序的上下文中查找由@theia/cli提供的theia可执行文件,然后使用theia执行build命令。这可能需要一些时间,因为默认情况下应用程序会在production模式下进行构建,即它会进行模糊处理和最小化处理。

运行

  构建完成之后,我们就可以启动应用程序:

yarn theia start

  你可以在命令的第一个参数中指定一个workspace路径,--hostname和--port选项用来指定部署的主机名和端口号。例如下面的命令在指定的位置和端口号上打开/workspace:

yarn theia start /my-workspace --hostname 0.0.0.0 --port 

  在终端中,你应该看到Theia应用程序已经启动并监听:

  打开浏览器并输入上面显示的地址,你就可以打开应用程序了。

故障排除

通过代理构建本地依赖项

  如果你通过代理运行yarn命令,在构建本地依赖项时有可能会遇到一些问题(如onigurma),例如下面的这个错误:

[/] Building fresh packages...
[/] XXXXX
[/] XXXXX
[/] XXXXX
[/] XXXXX
error /theiaide/node_modules/XXXXX: Command failed.
Exit code:
Command: node-gyp rebuild
Arguments:
Directory: /theiaide/node_modules/XXXXX
Output:
gyp info it worked if it ends with ok
gyp info using node-gyp@3.8.
gyp info using node@8.15. | linux | x64
gyp http GET https://nodejs.org/download/release/v8.15.0/node-v8.15.0-headers.tar.gz
gyp WARN install got an error, rolling back install
gyp ERR! configure error
gyp ERR! stack Error: read ECONNRESET
gyp ERR! stack at TLSWrap.onread (net.js::)
gyp ERR! System Linux 3.10.-862.11..el7.x86_64
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /theiaide/node_modules/XXXXX
gyp ERR! node -v v8.15.0

  这是因为node-gyp在system/NPM的代理设置中不工作。如果遇到这种情况,可以通过错误堆栈中提供的链接下载node-headers文件(如上面例子中的https://nodejs.org/download/release/v8.15.0/node-v8.15.0-headers.tar.gz),然后使用下面的命令进行构建:

npm_config_tarball=/path/to/node-v8.15.0-headers.tar.gz yarn install

原文地址:https://theia-ide.org/docs/composing_applications/

使用Theia——构建你自己的IDE的更多相关文章

  1. 使用Theia——创建扩展包

    上一篇:使用Theia——构建你自己的IDE 创建Theia扩展包 本例中,我们将添加一个菜单项“Say hello”用来显示一个通知“Hello world!”.本文将指导你完成所有必要的步骤. T ...

  2. 在 NetBeans IDE 6.0 中分析 Java 应用程序性能

    NetBeans IDE 6.0 包含一个强大的性能分析工具,可提供与应用程序运行时行为有关的重要信息.通过 NetBeans 性能分析工具,我们可以方便地在 IDE 中监控应用程序的线程状态.CPU ...

  3. Maven、gradle、Ant、Eclipse IDE

    Maven.gradle.Ant.Eclipse IDE之间的关系 http://wenku.baidu.com/view/d33208810912a21615792910.html?from=sea ...

  4. Android Studio添加原生库并自动构建

    [时间:2017-09] [状态:Open] [关键词:Android,Android Studio,gradle,native,c,c++,cmake,原生开发,ndk-build] 0 引言 最近 ...

  5. MCUXpresso IDE:导入Kinetis Design Studio工程

    我的许多当前活跃的工程都在使用恩智浦的Kinetis Design Studio(KDS)V3.2.0(我在GitHub上发表了许多工程). 现在随着MCUXpresso IDE的出现(参见“MCUX ...

  6. 《Java 开发从入门到精通》—— 2.3 使用IDE工具序

    本节书摘来异步社区<Java 开发从入门到精通>一书中的第2章,第2.3节,作者: 扶松柏 , 陈小玉,更多章节内容可以访问云栖社区"异步社区"公众号查看. 2.3 使 ...

  7. 【Tomcat 源码系列】源码构建 Tomcat

    一,前言 这篇博客写于 12 月 12 日,从 github[1] 上 fork 了一份 tomcat 的源代码,clone 到了本地.最近想把 tomcat 的源代码分析一下,寒假的时候有完整的时间 ...

  8. Maven 学习-入门

    在进行Java开发的过程中,我接触到了Maven这套构建工具.所以,花费了点时间学习了一下这套构建工具,在学习过程中学习到的有关Maven的知识,在这里分享给大家. 什么是Maven 首先,在介绍Ma ...

  9. maven 简介

    本书代码下载 大家可以从我的网站下载本书的代码:http://www.juvenxu.com/mvn-in-action/,也可以通过我的网站与我取得联系,欢迎大家与我交流任何关于本书的问题和关于Ma ...

随机推荐

  1. 13 -3 jquery选择器和 jquery动画

    一 选择器: 1 基本选择器 例子: <!--id 类 标签--> <!DOCTYPE html> <html lang="en"> <h ...

  2. 在phpstudy中nginx伪静态配置

    ########################### #以下是虚拟主机配置 server { listen 80; server_name hzym.com; root "D:\phpst ...

  3. vue3——vue数据循环渲染

    博客地址 :https://www.cnblogs.com/sandraryan/ vue循环渲染 <!DOCTYPE html> <html lang="en" ...

  4. uva 100 The 3n + 1 problem (RMQ)

    uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem= ...

  5. C# 递归、try

    一.递归 递归:在函数体内调用本函数自身,直到符合某一条件不再继续调用 两个需要满足的条件1.有反复调用自身函数的过程2.有函数的出口:有不再继续执行的条件 例子: 案例: (一).输入正整数n,求n ...

  6. java代码注释:单行//,多行/* */,文档注释/** */

    1.单行注释      //: //后到本行结束的所有字符会被编译器忽略; 2.多行注释     /* */: /*  */之间的所有字符会被编译器忽略 3.文档注释     /** */: 在/** ...

  7. 央行下属的上海资信网络金融征信系统(NFCS)签约机构数量突破800家

    央行下属的上海资信网络金融征信系统(NFCS)签约机构数量突破800家 ——已接入NFCS的P2P网贷机构将优先 接入央行征信系统   P2P网贷行业的健康发展依赖于信用体系的支撑和保障,加快完善适应 ...

  8. Django入门2--Django的应用和开发第一个Template

    Django创建应用的命令: 应用的目录: 开发第一个Template:

  9. React 编写项目连环套路

    搭建一个项目 公共部分放一块:index.js style.js store.js reducer.js actionCreateors.js actionTypes.js 分页        一块一 ...

  10. Tomcat最佳线程数

    什么是最佳线程数? 为满足更多用户访问需求,可以调整Tomcat线程数,但是不能太大,否则导致线程切换开销,随着用户递增(线程数也随之调整),系统QPS逐渐增加,当用户量达到某个值,QPS并不会增加, ...