亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

使用VSCode 創建一個插件

2024-07-21 02:03:13
字體:
來源:轉載
供稿:網友

VSCode 創建一個插件,如何創建一個插件,VS Code 的插件既然是一個 Node.js 應用,那么官方自然也會提供了基于 NPM 的工具鏈來幫助你創建和維護插件。
首先你需要的是 yeoman,一個腳手架工具。通過 yeoman 你可以快速創建代碼模板,如下所示:

npm install -g yeoman

然后你需要安裝 VS Code 的模板:

npm install -g generator-code

有了腳手架,你就可以創建一個 VS Code 的插件模板了。接下來運行:

yo code myextension

請注意,第三個參數將是你新創建的插件的文件夾名字。

由上圖,你可以看到有七個插件模板:

前兩個是通過編程來提供插件功能,你可以選擇 TypeScript 或者 JavaScript,結果都是類似的,因為 TypeScript 最后也需要被編譯成 JavaScript 再發布;第三個是主題插件,你可以將你自己創建的主題分享給其他人;第四個是語言支持,也就是語法高亮、語言定義等;第五個是代碼片段的分享;第六個則是分享快捷鍵;第七個就是對多個插件進行組合分享。

關于主題(Color Theme)、快捷鍵(Keymap)、代碼片段(Code Snippet)的分享,我會在下一講進行介紹。語言支持之后也會涉及。今天,我們先講述第二個選項 “New Extension (JavaScript)”。

接下來,你會依次被提示輸入插件的名字、介紹、想要用哪個賬號發布、是否要打開 type check以及是否要使用 git 等。你可以暫時按照我的樣例進行輸入,之后也可以再根據需要修改。

輸入全部問題后,腳本就會自動地創建文件,安裝需要的 dependencies。全部結束后,腳本會提示你,可以運行下面的腳本打開這個插件的代碼。

cd myextension code .

VS Code 的腳手架,默認為我們創建了不少的文件。不過像 .gitignore、.eslintrc.json、README.md 這些文件的作用想必你已經比較熟悉了。對于這個插件而言,最重要的是下面幾個文件:

package.json 我上面提到了,VS Code 的插件就是一個 Node.js 的應用,package.json 里記錄了這個 Node.js 應用的信息。同時,插件的信息也會被記錄在這個文件內。 extension.js 這個文件是當前插件的全部代碼。 .vscode 腳手架工具已經為我們提供了調試配置、任務配置等,有了它們,我們就不用自己花時間書寫了。

好了,下面我們來看看 extension.js 和 package.json??赐晁鼈儯憔蛯?VS Code 插件是如何運行的有很好的理解的。

extension.js的內容在刪除了所有的注釋后,如下:

const vscode = require('vscode');function activate(context) {  console.log('Congratulations, your extension "myextension" is now active!');  let disposable = vscode.commands.registerCommand('extension.sayHello', function () {    vscode.window.showInformationMessage('Hello World!');  });  context.subscriptions.push(disposable);}exports.activate = activate;function deactivate() {}exports.deactivate = deactivate;

第一,我們引用了 vscode 這個庫。通過引用這個庫,我們就能夠使用 VS Code 的插件 API 了。

第二,我們創建了 activate 函數并且將其輸出。VS Code 的插件進程在激活這個插件時,就是調用這個被輸出(export)的函數。也就是說,這個函數,就是這個插件的入口。

相對應的就是 deactivate 函數,當我們禁用這個插件或者關閉 VS Code 時,這個函數就會被調用了。
下面我們再來看看 activate 這個函數:

function activate(context) {  console.log('Congratulations, your extension "myextension" is now active!');  let disposable = vscode.commands.registerCommand('extension.sayHello', function () {    vscode.window.showInformationMessage('Hello World!');  });  context.subscriptions.push(disposable);}`

這個函數首先輸出了 log,告訴我們插件已經被成功激活了。接著,我們使用 vscode.commands.registerCommand注冊一個名為 extension.sayHello的命令,這個命令的實現,是 registerCommand的第二個參數,我們通過調用 vscode.window.showInformationMessage ,在界面上調出一個提示框,內容則是 Hello World!

不過,光有 extension.js ,這個插件是無法運行的。VS Code 會根據條件來激活插件,而這個激活條件寫在了 package.json 中,那么我們一起來看下package.json。

{  "name": "myextension",  "displayName": "myextension",  "description": "my extension",  "version": "0.0.1",  "publisher": "rebornix",  "engines": {    "vscode": "^1.29.0"  },  "categories": [    "Other"  ],  "activationEvents": [    "onCommand:extension.sayHello"  ],  "main": "./extension",  "contributes": {    "commands": [      {        "command": "extension.sayHello",        "title": "Hello World"      }    ]  },  "scripts": {    "postinstall": "node ./node_modules/vscode/bin/install",    "test": "node ./node_modules/vscode/bin/test"  },  "devDependencies": {    "typescript": "^2.6.1",    "vscode": "^1.1.21",    "eslint": "^4.11.0",    "@types/node": "^8.10.25",    "@types/mocha": "^2.2.42"  }}

上面這個文件,跟普通的 npm 的 package.json 只有三處不同。

第一處是 engines。

"vscode": "^1.29.0"

它指定了運行這個插件需要的 VS Code 版本。比如 “^1.29.0” 就是說明,要安裝運行這個插件必須要使用 VS Code 1.29 及以上版本。

第二處是 activationEvents。

"activationEvents": [  "onCommand:extension.sayHello"]

這個屬性指定了什么情況下這個插件應該被加載并且激活。在我們這個例子里,激活條件是,當用戶想要運行 “extension.sayHello” 這個命令時,就激活這個插件。
這個機制能夠保證,當我們需要使用這個插件的時候,這個插件才被激活,盡可能地保證性能和內存使用的合理性。

第三處是 contributes。

"contributes": {  "commands": [    {      "command": "extension.sayHello",      "title": "Hello World"    }  ]},

這個屬性指定了,我們這個插件給 VS Code 添加了一個 command,這個 command 的 id 是 “extension.sayHello”, 跟 extension.js 中寫的一樣。而這個命令的名字,叫做 Hello World。

如果不寫這個屬性的話,VS Code 是不會把這個命令注冊到命令面板中的,我們也就沒法找到這個命令并且執行了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲黄色免费三级| 97人人模人人爽人人喊中文字| 成人亚洲综合色就1024| 久久人人爽国产| 精品国产福利视频| 国产精品第10页| 国产小视频91| 一区二区三区久久精品| 日韩午夜在线视频| 欧美成人黑人xx视频免费观看| 法国裸体一区二区| 欧美亚洲伦理www| 黄色一区二区三区| 亚洲男人的天堂网站| 国产精品日韩欧美综合| 久久亚洲精品视频| 亚洲欧美日韩成人| 国产一区二区色| 中文日韩在线观看| 一区二区三区四区在线观看视频| 国产精品精品视频| 色综合老司机第九色激情| 欧美激情国产日韩精品一区18| 久久久在线视频| 国产精品成人va在线观看| 激情懂色av一区av二区av| 伊人伊成久久人综合网小说| 一区二区成人av| 欧美极品少妇xxxxⅹ免费视频| 亚洲二区在线播放视频| 欧美在线性爱视频| 精品中文字幕视频| 国产精品亚洲片夜色在线| 欧美寡妇偷汉性猛交| 亚洲精品xxx| 国产精品激情自拍| 国产精品久久久久秋霞鲁丝| 成人免费在线网址| 成人性教育视频在线观看| 欧美一级免费看| 欧美老妇交乱视频| 日韩亚洲欧美成人| 青青久久av北条麻妃海外网| 久久久日本电影| 亚洲人成电影网站| 国产亚洲欧美视频| 亚洲国产欧美在线成人app| 亚洲午夜久久久影院| 久久久免费精品视频| 国产精品高潮呻吟久久av黑人| 欧美高清激情视频| 欧美午夜女人视频在线| 欧美激情网站在线观看| 亚洲精品国产精品国自产观看浪潮| 欧美日韩亚洲一区二区三区| 日韩在线观看免费| 欧美成人免费小视频| 国产suv精品一区二区| 97视频免费观看| 亚洲激情视频在线播放| 欧美孕妇孕交黑巨大网站| 久久久在线视频| 中文字幕在线视频日韩| 亚洲欧美一区二区三区在线| 一区二区三区亚洲| 欧美日在线观看| 精品美女永久免费视频| 亚洲精品一区中文| 国产精品视频区1| 久久久精品视频成人| 亚洲精品xxxx| 97视频在线观看免费| 国产欧美精品va在线观看| 欧美激情三级免费| 38少妇精品导航| 欧美视频在线观看免费| 性色av一区二区三区免费| 亚洲国产高清福利视频| 青草成人免费视频| 国产成人精品久久久| 亚洲精品免费在线视频| 国产欧美日韩亚洲精品| 国产精品在线看| 神马国产精品影院av| 中文字幕欧美精品日韩中文字幕| 国产高清在线不卡| 欧美丰满老妇厨房牲生活| 欧美超级乱淫片喷水| 欧美影院久久久| 日韩电视剧在线观看免费网站| 国产精品福利在线观看| 久久亚洲春色中文字幕| 欧美激情第三页| 国产精品日韩专区| 这里精品视频免费| 午夜精品一区二区三区在线视| 国产精品久久久久77777| 美女撒尿一区二区三区| 色七七影院综合| 亚洲片国产一区一级在线观看| 国产精品一区二区在线| 精品久久中文字幕| 在线日韩欧美视频| 中文字幕欧美精品日韩中文字幕| 久久国产精品久久久久久久久久| 欧美午夜性色大片在线观看| 久久99精品久久久久久噜噜| 国产成人avxxxxx在线看| 久久亚洲精品毛片| 青青草精品毛片| 日产精品99久久久久久| 亚洲全黄一级网站| 久久精品夜夜夜夜夜久久| 国产亚洲a∨片在线观看| 午夜精品视频在线| 国产视频欧美视频| 色妞久久福利网| 成人午夜一级二级三级| 亚洲欧美成人网| 91九色单男在线观看| 亚洲精品在线不卡| 高清亚洲成在人网站天堂| 亚洲第一精品电影| 亚洲精品videossex少妇| 欧美大成色www永久网站婷| 欧美成人精品不卡视频在线观看| 日韩精品在线播放| 亚洲欧美国产精品| 亚洲免费人成在线视频观看| 日韩大陆欧美高清视频区| 一区二区三区亚洲| 日韩专区中文字幕| 成人精品一区二区三区电影免费| 国产欧美一区二区三区在线| 欧美激情欧美狂野欧美精品| 亚洲性生活视频| 国产精品大陆在线观看| 日韩禁在线播放| 亚洲欧美日韩中文在线| 中文字幕v亚洲ⅴv天堂| 最近2019中文字幕mv免费看| 国产综合色香蕉精品| 久久久久久久999| 午夜精品在线观看| 欧美亚洲日本网站| 日韩成人黄色av| 欧美日韩国产精品| 亚洲高清福利视频| 亚洲精品白浆高清久久久久久| 欧美精品一区二区免费| 欧美精品aaa| 欧美日韩一区二区免费视频| 91国偷自产一区二区三区的观看方式| 欧美激情视频一区二区三区不卡| 亚洲欧美日韩天堂一区二区| 国精产品一区一区三区有限在线| 国产一区二中文字幕在线看| 性欧美视频videos6一9| 亚洲国产成人91精品| 亚洲一区二区自拍| 国产精品爽爽ⅴa在线观看| 色综合色综合久久综合频道88| 国产婷婷成人久久av免费高清| 欧美精品一区在线播放|