须要的基础环境列表: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
文件便可安装完成。
安装完成后,咱们能够在扩展中找到咱们的扩展: