...
@injectable()
export class HelloWorldMenuContribution implements MenuContribution {
registerMenus(menus: MenuModelRegistry): void {
menus.registerMenuAction(CommonMenus.EDIT_FIND, {
commandId: HelloWorldCommand.id,
label: 'Say Hello'
});
}
}
在浏览器中运行扩展包
现在来看看我们的扩展包是如何工作的。为此,生成器在browser-app目录中创建了一个package.json文件,定义了一个含有几个扩展包的Theia浏览器应用程序,其中包含了我们的hello-world-extension。目录中剩余的其它文件都是由yarn在构建过程中通过theia-cli工具自动生成的,如scripts部分中所定义的。
{
"name": "browser-app",
"version": "0.1.0",
"dependencies": {
"@theia/core": "latest",
"@theia/filesystem": "latest",
"@theia/workspace": "latest",
"@theia/preferences": "latest",
"@theia/navigator": "latest",
"@theia/process": "latest",
"@theia/terminal": "latest",
"@theia/editor": "latest",
"@theia/languages": "latest",
"@theia/markers": "latest",
"@theia/monaco": "latest",
"@theia/typescript": "latest",
"@theia/messages": "latest",
"hello-world-extension": "0.1.0"
},
"devDependencies": {
"@theia/cli": "latest"
},
"scripts": {
"prepare": "theia build",
"start": "theia start",
"watch": "theia build --watch"
},
"theia": {
"target": "browser"
}
}
现在所有构建和运行应用程序需要的部分都准备好了,要运行它,输入下面的命令:
cd browser-app
yarn start
然后在浏览器中输入http://localhost:3000,在打开的应用程序中选择Edit>Say Hello,你将会看到 “Hello World!”的消息弹出。
在Electron中运行扩展包
Electron应用程序中的package.json与浏览器应用程序中的类似,除了name和target属性不同。
{
"name": "electron-app",
...
"theia": {
"target": "electron"
}
}
在运行electron应用程序之前,你需要重新构建一些本地的模块:
yarn rebuild:electron
cd electron-app
yarn start
部署扩展包
如果你想公开你的扩展包,我们建议你将它发布到npm。你可以通过在扩展包的目录中调用yarn publish来完成,当然前提是你需要一个有效的账户。