VSCode插件制作:HTML代码自动填充

Visual Studio Code不但跨平台,还有良好的扩展性。我们可以在Visual Studio Marketplace上找到各种各样的插件。这里分享下怎样制作一个简单的用于代码填充的插件。

自定义代码片段

键盘快捷键Ctr+Shift+P搜索关键字snippet:

vscode user snippet

选择HTML:

vscode snippet language

这个时候在C:\Users\<user name>\AppData\Roaming\Code\User\snippets下会自动创建一个html.json的模版文件:

vscode snippet template

现在可以在里面写一点东西了。这里是Dynamic Web TWAIN的代码:

{
    "include": {
        "prefix": "dwt include",
        "body": [
            "<script type=\"text/javascript\" src=\"https://www.dynamsoft.com/Demo/DWT/Resources/dynamsoft.webtwain.min.js\"> </script>"
        ],
        "description": "Include Dynamic Web TWAIN JavaScript library."
    },
    "scan module": {
        "prefix": "dwt scan module",
        "body": [
            "<input type=\"button\" value=\"Scan\" onclick=\"AcquireImage();\" />",
            "<div id=\"dwtcontrolContainer\"></div>\n",
            "<script type=\"text/javascript\">",
            "function AcquireImage() {",
            "\tvar DWObject = Dynamsoft.WebTwainEnv.GetWebTwain('dwtcontrolContainer');",
            "\tDWObject.IfDisableSourceAfterAcquire = true;",
            "\tvar bSelected = DWObject.SelectSource(); \n",
            "\tif(bSelected) {",
            "\t\tvar OnAcquireImageSuccess, OnAcquireImageFailure;",
            "\t\tOnAcquireImageSuccess = OnAcquireImageFailure = function () {",
            "\t\tDWObject.CloseSource();",
            "\t};\n",
            "\tDWObject.OpenSource();",
            "\tDWObject.AcquireImage(OnAcquireImageSuccess, OnAcquireImageFailure);  ",
            "\t}",
            "}",
            "</script>"
        ],
        "description": "A simple web scanning module."
    },
    "full sample": {
        "prefix": "dwt full sample",
        "body": [
            "<!DOCTYPE html>\n<head>\n\t<title>Hello World</title>",
            "\t<script type=\"text/javascript\" src=\"https://www.dynamsoft.com/Demo/DWT/Resources/dynamsoft.webtwain.min.js\"> </script>\n</head>\n\n<body>",
            "\t<input type=\"button\" value=\"Scan\" onclick=\"AcquireImage();\" />",
            "\t<div id=\"dwtcontrolContainer\"></div>\n",
            "\t<script type=\"text/javascript\">",
            "\tfunction AcquireImage() {",
            "\t\tvar DWObject = Dynamsoft.WebTwainEnv.GetWebTwain('dwtcontrolContainer');",
            "\t\tDWObject.IfDisableSourceAfterAcquire = true;",
            "\t\tvar bSelected = DWObject.SelectSource(); \n",
            "\t\tif(bSelected) {",
            "\t\t\tvar OnAcquireImageSuccess, OnAcquireImageFailure;",
            "\t\t\tOnAcquireImageSuccess = OnAcquireImageFailure = function () {",
            "\t\t\tDWObject.CloseSource();",
            "\t\t};\n",
            "\t\tDWObject.OpenSource();",
            "\t\tDWObject.AcquireImage(OnAcquireImageSuccess, OnAcquireImageFailure);  ",
            "\t\t}",
            "\t}",
            "\t</script>\n</body>\n</html>"
        ],
        "description": "The full sample code - hello world."
    }
}

现在创建一个新的html文件。在里面输入前缀dwt就会出现代码提示:

vscode dwt extension

插件制作

接下来要做的事,就是把这个html.json文件放到插件里面。官方推荐使用Yeoman:

npm install -g yo generator-code
yo code

vscode yo code

这里有几个选项,看起来我们应该选择最后一项。选择最后一项会提示你选择一个包含.tmSnippets或者 .sublime-snippets文件的目录。那没有的话怎么办呢?可以不需要yo,手动创建目录结构:

.
 
├── images     
 
    └── dwt.jpg              // The extension logo                         
 
├── snippets                   
 
│   └── html.json           // The JSON file with the snippets
 
└── package.json            // extension's manifest

这里总共有3个文件:插件logo,代码片段,配置文件。要做的事情就是编写一下配置文件:

{
    "name": "dwt",
    "displayName": "Dynamic Web TWAIN",
    "description": "Dynamic Web TWAIN is a browser-based document scanning SDK specifically designed for web applications. With just a few lines of JavaScript code, you can develop robust applications to scan documents.",
    "version": "0.0.4",
    "publisher": "Dynamsoft",
    "icon": "images/dwt.jpg",
    "categories": [
        "Snippets"
    ],
    "galleryBanner": {
        "color": "#f5f3f4",
        "theme": "light"
    },
    "homepage": "http://www.dynamsoft.com/Products/WebTWAIN_Overview.aspx",
    "repository": {
        "type": "git",
        "url": "https://github.com/Dynamsoft/Dynamic-Web-TWAIN.git"
    },
    "engines": {
        "vscode": "^1.5.0"
    },
    "keywords": [
        "JavaScript TWAIN",
        "JavaScript scan",
        "Document scanning",
        "Document management",
        "Web TWAIN"
    ],
    "contributes": {
        "snippets": [{
            "language": "html",
            "path": "./snippets/html.json"
        }]
    }
}

插件打包

接下来用vsce来打包:

npm install -g vsce
vsce package

这个时候会生成一个.visx的文件。我们可以直接安装:

code --install-extension extension.vsix

插件被安装在C:\Users\<user name>\.vscode\extensions\Dynamsoft.dwt-0.0.4。安装之后可以在VS Code中测试下是否起作用。

发布插件

登录Visual Studio Team Services。选择account > Security > Add来创建Personal Access Token

创建一个新的发布者:

vsce create-publisher (publisher name)

使用刚才创建的Token来发布插件:

vsce login (publisher name)
vsce publish -p <token>

安装插件

这里是我做好的插件:

https://marketplace.visualstudio.com/items?itemName=Dynamsoft.dwt

vscode dwt online

VS Code中使用快捷键Ctrl+P安装插件:

ext install dwt

install dwt for visual studio code

安装之后重启一下VS Code就可以用了。

参考资料

源码

https://github.com/dynamsoft-dwt/vscode-extension


  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
<div class="user_handu_menu"> <ul> <li style="color:#fff;"> 韩风快时尚领先品牌 </li> <li style="background:#333;"> <a href="http://handuyishe.jd.com/" target="_blank"><strong>首页</strong></a> </li> <li> <a href="http://handuyishe.jd.com/view_search-53374-0-5-1-24-1.html" target="_blank">全部商品</a> <ul style="background-color: transparent;"> <li style="background-color: transparent;"><!--弹出菜单end--> <div class="user_handu_menu_all"><!--品类--> <div class="user_handu_menu_pinlei"> <div class="user_handu_menu_toptext"> <a href="http://handuyishe.jd.com/view_search-53374-0-5-1-24-1.html" target="_blank">全部商品>></a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-0-5-1-24-1.html" target="_blank"><span>按销量</span></a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-16874-15706-0-1-0-0-1-1-24.html?isGlobalSearch=0&other=" target="_blank">按新品</a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-16874-15706-0-4-0-0-1-1-24.html?isGlobalSearch=0" target="_blank">按价格</a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-16874-15706-0-3-0-0-1-1-24.html?isGlobalSearch=0&other=" target="_blank">按好评度</a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-16874-15706-0-0-0-0-1-1-24.html?isGlobalSearch=0&other=" target="_blank">按相关度</a> </div> </div><!--品类end--><!--品类--> <div class="user_handu_menu_pinlei"> <div class="user_handu_menu_toptext"> <a href="http://handuyishe.jd.com/view_search-53374-66892-1-0-24-1.html" target="_blank">新品上新</a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-3224654-99-0-24-1.html" target="_blank">07月16日新品</a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-3232399-99-0-24-1.html" target="_blank">07月17日新品</a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-3243452-99-0-24-1.html" target="_blank">07月20日新品</a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-3249688-99-0-24-1.html" target="_blank">07月21日新品</a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-3263410-99-0-24-1.html" target="_blank">07月23日新品</a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-3269722-99-0-24-1.html" target="_blank">07月24日新品</a> </div> </div><!--品类end--><!--品类--> <div class="user_handu_menu_pinlei"> <div class="user_handu_menu_toptext"> <a href="http://handuyishe.jd.com/view_search-53374-66818-99-0-24-1.html" target="_blank">女上装</a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-855515-99-0-24-1.html" target="_blank"><span>长袖T恤</span></a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-855516-99-0-24-1.html" target="_blank"><span>长袖衬衫</span></a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-16874-15706-855516-0-0-0-1-1-24.html?keyword=%25E5%258D%25B0%25E8%258A%25B1T%25E6%2581%25A4&isGlobalSearch=1" target="_blank">印花T恤</a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-66823-99-0-24-1.html">针织衫/毛衣</a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-66866-99-0-24-1.html">雪纺衫</a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-66824-99-0-24-1.html" target="_blank">卫衣</a> </div> </div><!--品类end--><!--品类--> <div class="user_handu_menu_pinlei"> <div class="user_handu_menu_toptext"> <a href="http://handuyishe.jd.com/view_search-53374-66876-99-0-24-1.html" target="_blank">女士裙装</a> </div> <div class="user_handu_menu_text"> <a href="http://mall.jd.com/view_search-53374-855790-1-0-20-1.html" target="_blank"><span>长袖连衣裙</span></a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-16874-15706-66878-5-0-0-1-1-24.html?keyword=%25E5%258D%25B0%25E8%258A%25B1%25E8%25BF%259E%25E8%25A1%25A3%25E8%25A3%2599&isGlobalSearch=1&other=" target="_blank">印花连衣裙</a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-855791-99-0-24-1.html" target="_blank">短袖连衣裙</a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-66878-99-0-24-1.html" target="_blank">半身裙</a> </div> </div><!--品类end--><!--品类--> <div class="user_handu_menu_pinlei"> <div class="user_handu_menu_toptext"> <a href="http://handuyishe.jd.com/view_search-53374-66868-99-0-24-1.html" target="_blank">裤装</a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-66870-99-0-24-1.html" target="_blank"><span>牛仔长裤</span></a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-443985-99-0-24-1.html" target="_blank"><span>短裤</span></a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-1443739-99-0-24-1.html" target="_blank">九分裤</a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-66869-99-0-24-1.html" target="_blank">小脚裤</a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-66872-99-0-24-1.html" target="_blank">哈伦裤</a> </div> </div><!--品类end--><!--品类--> <div style="margin-right: 5px;" class="user_handu_menu_pinlei"> <div class="user_handu_menu_toptext"> <a href="http://handuyishe.jd.com/view_search-53374-1920006-99-0-24-1.html" target="_blank">鞋包配饰</a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-16874-15706-88841-5-0-0-0-1-24.html?isGlobalSearch=0" target="_blank"><span>美鞋</span></a> </div> <div class="user_handu_menu_text"> <a href="http://handuyishe.jd.com/view_search-53374-16874-15706-75453-5-0-0-0-1-24.html?isGlobalSearch=0" target="_blank">箱包</a> </div> </div><!--品类end--><!--品类--> <div class="user_handu_menu_pinlei0"> <div class="user_handu_menu_logo"> <a href="http://sale.jd.com/mall/LtE4HNrD7z.html" target="_blank"><img class="" src="http://img12.360buyimg.com/cms/jfs/t1375/250/921922200/32365/b5a136a1/55b1e650Nb1525f7d.jpg" alt="" border="0" height="180" width="161"></a> </div> </div><!--品类end--> </div><!--弹出菜单end--> </li> </ul> </li> <li> <div style="position: absolute; margin-top: -10px; margin-left: 30px;"> <img class="" src="http://img14.360buyimg.com/cms/jfs/t454/249/1115160428/1242/eea9212a/54b09cdfNf1ffa92a.gif" alt="" border="0" height="15" width="23"> </div> <a href="http://sale.jd.com/mall/WL3cR8m0VxS.html" target="_blank">每日上新</a> </li> <li> <div style="position: absolute; margin-top: -10px; margin-left: 30px;"> <img class="" src="http://img10.360buyimg.com/cms/jfs/t760/254/441258711/915/14034d72/54b09c10N0b29a9c2.gif" alt="" border="0" height="16" width="21"> </div> <a href="http://sale.jd.com/mall/nyDl2gdhiY.html" target="_blank"><span>裙装</span></a> </li> <li> <div style="position: absolute; margin-top: -10px; margin-left: 30px;"> <img class="" src="http://img10.360buyimg.com/cms/jfs/t760/254/441258711/915/14034d72/54b09c10N0b29a9c2.gif" alt="" border="0" height="16" width="21"> </div> <a href="http://sale.jd.com/mall/SJUDhVGg8lx.html" target="_blank">T恤</a> </li> <li> <a href="http://sale.jd.com/mall/voeGMc7jmDh.html" target="_blank">牛仔裤</a> </li> <li> <a href="http://sale.jd.com/mall/DudNsiCW4jGB.html" target="_blank">品牌故事</a> </li> <li> <a href="http://sale.jd.com/mall/Sx71cyu8daL5K.html" target="_blank">自助购物</a> </li> <li> <a href="http://sale.jd.com/mall/y7egzEC3QTkOuP5G.html" target="_blank">手机专享</a> </li> </ul> <div class="user_handu_menuseach"> <div class="j-module" module-function="follow" module-param="{type:'shopId',id:'15706',node:'.item'}" style="cursor: pointer;"> <span class="item"> Ctrl+D添加到收藏</span> </div> </div> </div>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值