天天看點

HeyUI元件庫釋出vscode插件,PS教程: 如何開發vscode插件?

前沿

HeyUI元件庫,我們項目組已經用了一年多了。

一直沒有對應的元件庫插件,我一直耿耿于懷。

是以,抽時間查閱了vscode的插件開發教程,終于把vscode的插件完成了。

在此奉上我們的插件庫連結,多謝大家提建議。

git:

github.com/heyui/heyui…

vscode:

marketplace.visualstudio.com/items?itemN…

或者大家可以通過在vscode插件庫中搜尋 heyui-snippets進行安裝。

HeyUI

如果對我們元件庫不熟悉的小夥伴可以參見我們官網:

heyui.top

或者圍觀我們的github:

github.com/heyui/heyui

用例

其他不說,先把效果奉上。

vue單檔案結構

首先:我提供了一個vue的輸入提示,類似于emmit的!,生成vue單檔案的基本結構。

HeyUI元件庫釋出vscode插件,PS教程: 如何開發vscode插件?

heyui元件庫的元件輸入提示

heyui元件庫有很多元件,如果沒有元件的輸入提示,基本上,我們都需要手寫很多元件的标簽,這裡我們提供所有的元件庫輸入提示,以友善程式編寫中的效率。

HeyUI元件庫釋出vscode插件,PS教程: 如何開發vscode插件?

Component 輸入提示

Component
Affix
BackTop
Badge
Checkbox
Circle
Category
Datetime
DropdownCustom
DropdownMenu
Form
FormItem
Menu
Modal
ModalComponent
Pagination
Poptip
Progress
Radio
Rate
Slider
Loading
Steps
Search
Select
Switch
SwitchList
Tabs
TagInput
Tree
TreePicker
NumberInput
Tooltip
Uploader
AutoComplete
Timeline
TextEllipsis
Table
TableItem
Row
Col
Button
ButtonGroup

Method 輸入提示

Method
$Message
$Notice
$Confirm
$Loading
$ScrollIntoView

教程

寫了這麼多,如果大家對于如何開發vscode的插件比較好奇的話,可以往下接着看。

其實heyui-snippets是比較簡單的插件,就是單純的輸入提示。

這種輸入提示,大家其實可以在vscode中自定義,友善自己的開發。

自定義輸入提示

我首先把自定義輸入提示的教程放出來:

首先 Shift+Command+P,打開指令輸入框,輸入snippet,點選首選項:配置使用者代碼片段

HeyUI元件庫釋出vscode插件,PS教程: 如何開發vscode插件?

由于我是用來做vue檔案的輸入提示,系統中并沒有預設的配置項,我們可以通過建立的方式建立配置項。

HeyUI元件庫釋出vscode插件,PS教程: 如何開發vscode插件?

建立vue.code-snippets的檔案

HeyUI元件庫釋出vscode插件,PS教程: 如何開發vscode插件?

系統會自動生成配置檔案,你可以通過修改配置檔案來達到snippet的功能。

"TestSnippet": {
    "prefix": "TestSnippet",
    "body": [
    	"<TestSnippet v-model=\"$1\"></TestSnippet>"
    ],
    "description": "insert a TestSnippet component"
}

           

如上段代碼所示,我配置了一個TestSnippet元件的輸入提示,那在vue代碼中應用是這個樣子的:

HeyUI元件庫釋出vscode插件,PS教程: 如何開發vscode插件?

但是,這個有一個不好的問題,就是在javascript代碼中也會出現提示。

HeyUI元件庫釋出vscode插件,PS教程: 如何開發vscode插件?

于是我們就要配置scope屬性,這裡就遇到了一個坑,vue的template代碼片段,在vscode官網中,是沒有文檔的。

而且,對于scope的定義與配置也是模糊不清,總之,我嘗試了很久,才弄清楚。

vscode中,我們會安裝vetur,這個基本上算是vue語言插件,在這個插件中,對于vue是這麼定義的:

"text.html.basic": "html",
"text.html.vue-html": "vue-html",
"text.pug": "pug",
"text.haml": "haml",
"source.css": "css",
"source.css.scss": "scss",
"source.css.less": "less",
"source.css.postcss": "postcss",
"source.sass": "sass",
"source.stylus": "stylus",
"source.js": "javascript",
"source.ts": "typescript",
"source.coffee": "coffeescript",
"text.html.markdown": "md",
"source.yaml": "yaml",
"source.json": "json",
"source.php": "php"

           

一開始,如果參考sublime的snippet配置,scope是使用text.html.vue-html這種定義的,于是我在插件庫的定義中使用這一種,發現不行,總之最後,終于嘗試很久,把發現用的是後面的那一種配置。

在自定義的配置文檔中:

"TestSnippet": {
	"scope": "vue-html", //設定scope
	"prefix": "TestSnippet",
	"body": [
		"<TestSnippet v-model=\"$1\"></TestSnippet>",
		"$2"
	],
	"description": "insert a TestSnippet component"
}

           

就可以正确的使用snippet了。

插件的開發

在知道正确配置的情況下,轉移到snippet插件的開發中,還是走了一些彎路,過程就叙述了,把正确的配置放出來:

package.json

scope定義在language屬性上,是的,就是這麼坑DIE

"contributes": {
    "snippets": [
        {
            "language": "vue",
            "path": "./snippets/vue.json"
        },
        {
            "language": "vue-html", //scope定義在language屬性上
            "path": "./snippets/component.json"
        },
        {
            "language": "javascript",
            "path": "./snippets/javascript.json"
        }
    ]
}

           

component.json就按照正常的配置就可以了。

至于插件的上傳,就不多描述了,大家直接新增賬號釋出就可以了。

支援

說了這麼多,也希望大家多支援我的元件庫

HeyUI元件庫

下一步

下一步,我會補充我們HeyUI的ADMIN系統,就是不知道,大家希望有哪一些功能?如果大家有時間,希望大家在給我一些回報:

原文釋出時間為:2018年07月02日

本文作者:

vvpvvp

本文來源:

掘金 

 如需轉載請聯系原作者