須要的基礎環境列表:javascript
安裝npm後經過下面的命令,安裝yo generator -core
html
npm install -g yo generator-code
執行下面的命令:java
yo code
執行命令後,是下面一番景象:git
這裏咱們先選擇New Code Snippets(代碼片斷)github
接着是各類讓你選擇的東西,咱們能夠按下面的方式選(粗體爲你須要敲的字符):typescript
完事兒以後,就會幫你建立出來一個hello-world
的文件夾,裏面建立好各類須要的文件,咱們用VSC打開這個文件夾,大概是這樣一個畫風:npm
咱們打開snippets\snippets.json
文件,並將其內容改成以下:編程
1 { 2 "hello world": { 3 "prefix": "hw", 4 "body": [ 5 "<h1>hello world</h1>" 6 ], 7 "description": "hello world" 8 } 9 }
在VSCode中,直接按下F5
,稍等片刻即會自動啓動一個新的VSCode窗口,在這個新的窗口中,就是已經加載了咱們剛纔編寫的hello-world
這個擴展。json
咱們能夠經過ctrl + n
建立一個新的頁面,並將點擊右下角的plan text
,在彈出窗口中選擇html
,將文件類型改成html,而後在新的頁面中鍵入hw
,就能夠看到咱們剛寫的hello-world
的代碼片斷已經生效啦。api
下面是一張成功後的動圖:
如下內容來自:https://code.visualstudio.com/api/extension-capabilities/overview
基礎版
定製主題
聲明語言特性
程序化的語言功能
擴展Workbench
WebView
API 呈現自定義內容。 調試
是否是有點眼花繚亂?沒錯,VSC幾乎能夠擴展全部的東西!
那有沒有什麼不能擴展?
有!那就是出於安全考慮,禁止擴展訪問VSC的DOM元素!
啥?DOM元素?沒錯,VSC就是基於HTML + JavaScript編寫的
package.json
文件中,其實放的不少東西是咱們剛纔在使用命令行初始化時敲的內容,以下:
1 { 2 "name": "hello-world", // 擴展名稱(ID) 3 "displayName": "hello-world", // 擴展展現名稱 4 "description": "it's a demo", // 擴展描述 5 "version": "0.0.1", // 版本號 6 "engines": { 7 "vscode": "^1.32.0" // 兼容的VSC的版本,^1.32.0表示從兼容1.32.0以上的版本 8 }, 9 "categories": [ // 插件的類型 10 "Snippets" //表示該插件中會包含代碼片斷, 11 ], 12 "contributes": { // 一些額外的信息 13 "snippets": [ // 用於代碼片斷的額外信息 14 { 15 "language": "html", //該代碼片斷的語言是html 16 "path": "./snippets/snippets.json" // 代碼片斷位於該文件中 17 } 18 ] 19 } 20 }
那個人項目中,可能不單單有html
,還會有typescript
、javascript
怎麼辦?
其實很簡單,只須要在contributes
下的snippets
節點中增長便可,相似以下:
1 { 2 "name": "hello-world", 3 "displayName": "hello-world", 4 "description": "it's a demo", 5 "version": "0.0.1", 6 "engines": { 7 "vscode": "^1.32.0" 8 }, 9 "categories": [ 10 "Snippets" 11 ], 12 "contributes": { 13 "snippets": [ 14 { 15 "language": "html", 16 "path": "./snippets/snippets-html.json" 17 }, 18 { 19 "language": "typescript", 20 "path": "./snippets/snippets-ts.json" 21 }, 22 { 23 "language": "javascript", 24 "path": "./snippets/snippets-js.json" 25 } 26 ] 27 } 28 }
固然了,path對應的json文件,也須要手動建立一下。
snippets
文件夾下面存放的是代碼片斷,該目錄名字不是固定的,只要與package.json
中配置的代碼片斷目錄一致便可。
用戶在VSCode插件中的Detail中展現的內容,用來存放插件的描述文件。
插件的變動記錄
是VS Code的一些信息,默認生成的項目中,主要用來存放Debug
時的一些配置。
出於公司代碼安全和IT策略限制,咱們公司內部的擴展絕對不容許直接發佈到VS Code Extension MarketPlace,因此本節只討論如何在公司範圍內發佈VS Code擴展
npm install -g vsce
VS Code在發佈時,須要在package.json
中定義publisher
,咱們調整下上面hello-world
擴展中的package.json
爲以下:
1 2 { 3 "name": "hello-world", 4 "displayName": "hello-world", 5 "description": "it's a demo", 6 "version": "0.0.1", 7 "engines": { 8 "vscode": "^1.32.0" 9 }, 10 "publisher": "jax", 11 "categories": [ 12 "Snippets" 13 ], 14 "contributes": { 15 "snippets": [ 16 { 17 "language": "html", 18 "path": "./snippets/snippets.json" 19 } 20 ] 21 } 22 }
在上面第二節中已經提到過readme.md的做用了,vsc團隊要求在發佈時,必定不能用默認生成的readme.md的內容,那咱們就隨便改改吧(建議實際操做時,按VSC建議的格式認真寫)
在插件根目錄執行下面的命令:
vsce package
此時它會報個警告信息,讓你確認:
A 'repository' field is missing from the 'package.json' manifest file.
這個是因爲咱們沒有在package.json中填寫repository
字段,能夠直接忽略該警告,也能夠將你放擴展的源碼Git路徑填寫一下,例以下面這樣:
{ "name": "hello-world", "displayName": "hello-world", "description": "it's a demo", "version": "0.0.2", "engines": { "vscode": "^1.32.0" }, "publisher": "jax", "repository": { "url": "https://github.com/" }, "categories": [ "Snippets" ], "contributes": { "snippets": [ { "language": "html", "path": "./snippets/snippets.json" } ] } }
從新執行上面的打包命令,他就會自動生成出一個hello-world-0.0.2.vsix
文件。
有了這個擴展,你就能夠給你的小夥伴拿去安裝啦,那怎麼安裝呢?
首先,在VS Code中按F1
,並選擇Extensions:Install from VSIX...
這個選項,而後在彈出框中選擇剛纔經過vsce打包出來的hello-world-0.0.2.vsix
文件便可安裝完成。
安裝完成後,咱們能夠在擴展中找到咱們的擴展: