版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第页从零编写和发布一个VSCode扩展年初在TO-DO上计划了一个任务,是以解决自身需求为目的,开发一个VSCode扩展。
需求
最近一个小需求来了,能否在不离开VSCode编辑器的情况下,「查看文件或者文件夹的大小」。
调研
恰好目前扩展市场上没有统计文件夹相关的扩展,只有统计单个文件的,比如:「FileSize」
所以还是自己造轮子吧
预览
FolderSizePreview
试用
从网页安装,FolderSize,或者从扩展商店搜索
FolderSizeInstall
开发
快速入门
三个比较好的入门方法:
阅读官方文档
使用官方示例快速入门
阅读同类型扩展源码
大家都知道VSCode是用TypeScript写的,所以VSCode扩展自然是拥抱TS的,当然也可以用JS编写。
阅读同类型扩展代码的时候,发现大部分的扩展实现的统计文件信息的方式都不太一样,有的简单,有的复杂。
其实我这个需求官方文档上的例子完全就可以Cover住,我做的呢,只是整合了我所需要的功能特性,打开/选择文件的时候,可以在StatusBar(状态栏)显示格式为:[File|Folder]这样的文案。这样我就可以在不离开VSCode编辑器的情况下统计到了文件及文件夹的信息。
功能实现
目前「FolderSize」具备三个小功能:
统计文件大小
统计文件夹大小
统计文件夹中文件的个数
这些功能都是基于workspace的事件钩子去触发的,在打开或切换文件、保存文件、关闭文件时触发统计,下面会讲到A(PI)用法。
调试
没玩明白如何用VSCode自带的debug调试扩展的我,只能用打印内容来调试,VSCode
Ex(te)nsion有几个可以用于打印调试的功能。比如:
OutputChannel
showInformationMessage
showTextDocument
利用vsce工具进行打包为VSIX各式的文件,即VSCode扩展本地安装格式。也可以将文件发给他人测试。
发布
扩展发布需要注册Azure账号,VSCode使用AzureDevOps作为扩展市场服务,简单四步:
创建Azure账号,获取Pe(rs)onalAccessToken
vsce创建publisher,需要Token,对应package.json中声明的publisher
vsce以创建的publisher登录,需要Token
vsce发布
API
FolderSize扩展无任何第三方依赖,完全基于VSCode
ExtensionAPI进行开发,下面是用到的所有API,简单介绍下API用法
window
window.createOutputChannel
Anoutputchannelisacont(ai)nerforre(ad)onlytextualinformation.
对应VSCode里面的输出窗口,可以利用这个输出内容调试
window.showInformationMessage
Showaninforma(ti)onmessagetousers.Optionallyprovideanarrayofitemswhichwillbepresentedasclickablebuttons.
对应VSCode信息提示框,同样可以用于调试,也可以结合注册命令,给用户友好提示信息。
window.createStat(usB)arItem
Createsastatusbaritem.
创建一个状态栏实例,可以显示文本,控制显隐。
window.activeTextEditor
Thecurrentlyactiveeditororundefined.Theactiveeditoristheonethatcurrentlyhasfocusor,whennonehasfocus,theonethathaschangedinputmostrecently.
用于获取当前选中文件的URI
commands
mands.registerCommand
Registersacommandthat(can)beinvokedviaakeyboardshortcut,amenuitem,anaction,ordirectly.
Registeringacommandwithanexistingcommandidentifiertwicewillcauseanerror.
注册一个命令,比如给状态栏注册点击反馈命令
workspace
vscoce.workspace.fs.stat
Returnsthemetadataforafile.
用于统计当前选中文件的大小
vscode.workspace.fs.readDirectory
Allowstoretrieveallentriesofadirectory
读取当前选中文件的文件夹,可用此方法递归文件夹,统计文件夹大小
vscode.workspace.getConfiguration
Getaworkspaceconfigurationobject.
获取工作区配置项,用于扩展可自定义的配置项。
需要声明在package.json中,以下配置描述了可配置的可忽略的文件夹路径,默认值:node_modules|.git
用扩展去统计node_modules这个“黑洞”,可能会占用一定内存哦,还是忽略比较好。
"contributes":
{
"configuration":
[{
"title":
"Folder
Size
Configuration",
"properties":
{
"folder-size.ignoreFolders":
{
"type":
"string",
"default":
"node_modules|.git",
"description":
"The
Folders
Not
Counting",
"scope":
"resource"
}
}
}]}
vscode.workspace.onDidSaveTextDocument
Aneventthatisemittedwhenatextdocumentissavedtodisk.
保存文档时触发的事件,此时统计文件大小、文件夹大小
vscode.workspace.onDidOpenTextDocument
Aneventthatisemittedwhenatextdocumentisopenedorwhenthelanguageidofatextdocumenthasbeenchanged.
打开文档时触发的事件,此时统计文件大小、文件夹大小
vscode.workspace
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贵州酒店协议书
- 没有借条只有口头协议书
- 2025-2030人工智能法律伦理框架构建研究立法趋势探讨计划
- 2025-2030人工智能应用领域政策规划产业升级敏锐动态解读报告
- 2025-2030人工智能医疗辅助技术市场机遇分析及发展前景规划报告
- 2025-2030人参种植行业市场价格分析投资战略布局规划竞争态势研发竞争力报告
- 2025-2030交通运输设备报废拆解行业绿色环保处理规程与增值服务开发分析
- 人事档案库房管理制度
- 档案馆监控制度规范
- 看守所档案管理制度
- 3d和值怎么算最准确范文
- 教育学开题报告模板
- 化学品(氩气+二氧化碳混合气)安全技术使用说明书
- 工程管理前沿技术研究
- 2024版七年级下册美术模拟试卷
- 大学生创业设计指导 课件 项目一 路演敲开创业之门
- 羊寄生虫综合防控技术规范
- 缩短脑卒中患者静脉溶栓DNT的时间
- 诊所中药饮片清单
- 2023-2024学年人教部编版统编版九年级上学期历史期末模拟试卷(含答案解析)
- 2023年上海铁路局招聘3029人笔试参考题库(共500题)答案详解版
评论
0/150
提交评论