开启成长之旅!这是我参加「日新计划 12 月更文应战」的第24天,点击检查活动详情
package.json
对插件的详细描述,咱们先关注以下的字段:
{
"name": "test-plugin",
"main": "./out/extension.js",
"activationEvents":["*"],
"contributes":{
"commands":[
{
"command": "test-plugin.helloWorld",
"title": "Hello World"
}
]
}
// ...
}
-
name
:插件的姓名 -
main
:进口地址 -
commands
:插件一切能够运用的指令-
command
:当触发指令时,发送的消息姓名,格局为{name}.{cmd}
-
title
:指令的标题,咱们输入指令的时分就是以这个字段为准。
-
-
activationEvents
:激活可用的事情列表,格局为:{event}:{value}
。
activationEvents
设置激活插件的事情,当插件激活时会调用进口的activate
函数,插件默许是没有激活的。
vscode提供了非常多的事情类型,比方onLanguage
、onCommand
,onView
等。
拿command
举例,需求按照这样的格局书写
"activationEvents": [
"onCommand:test-plugin.helloWorld"
],
其中command
为contributes.commands
中的某一项值。
当运用指令形式,输入Hello World
,触发command的时分,插件就会激活。
留意事项
假如未声明在activationEvents
中的指令被触发,就会呈现一下警告:
这个警告让初为新手的我困惑了好长时间,算是一个留意点。
假如不想过滤任何事情,能够暴力的设置为
*
即可
{
"activationEvents": ["*"]
}
command的逻辑完成
在package.json
中咱们只是界说了command
,command
触发的逻辑在src/extension.ts
中:
export function active (context) {
context.subscriptions.push(
vscode.commands.registerCommand(
'test-plugin.helloWorld', // 留意这个参数,必须和packages.json中的command共同
() => {
// command的详细逻辑
vscode.window.showInformationMessage('Hello World!');
}
)
);
}
注释阐明的也比较明晰啦,大约这姿态,咱们就能够看到指令履行后,弹出一个Hello World
的提示语。
总结
经过上边的学习,咱们会发现以下2处的需求完全共同,并且都是{plugin-name}.{value}
的格局。
那么咱们不恪守这个格局,只需保证共同是否能够正常工作呢?答案是:完全能够。
但为什么官方的例子里面都是运用{plugin-name}.{value}
的格局呢?
以我个人经历,为了避免不同插件重名呈现未知的问题,插件姓名在整个生态是仅有的,以plugin-name
开头,能够保证仅有性。
so,那我可不能够A插件调用B插件的指令呢?
假如你有这个想法,阐明你已经对插件的了解又高人一步了!