Settings-Sync插件源码阅读
一、介绍
请参考官网:
https://marketplace.visualstudio.com/items?itemName=Shan.code-settings-sync
二、源码目录详解

Images:图片存放地
Node_modules: node.js依赖模块
out:编译输出目录(如果是ts则会输出js)
script:脚本放置
.travis.yml: travis 的配置文件,travis 是一种可持续集成(CI)工具,代码提交后自动构建,与github集成的很好,很多github的开源项目都使用 travis 进行CI。
.vsixmanifest:元数据
package.json:常用配置
package.lock.json:版本锁定文件
tslint.json:语法规则检查文件
webpack.config.js:webpack执行文件
package.nls.zh-cn.json:中文命令详解文件
三、源码阅读
1.travis.yml文件

travis 的配置文件,travis 是一种可持续集成(CI)工具,代码提交后自动构建,与github集成
看图已知是构建集成
包括构建插件所需的环境、打包部署等
关于travis可以参考该链接了解: https://travis-ci.org/
其中script中bash scripts/deploy.sh执行的是部署命令
代码如图:

Npm dedupe 重新计算依赖关系
Npm up 检查版本更新
Npm install -g vsce 全局安装
Printf或echo主要是输出
vsce publish 发布命令
插件制作与发布可以参考该文章: https://segmentfault.com/a/1190000014758981
2. .vsixmanifest
项目模板文件与xml有很大的相似之处

3.package.json
代码图一:

Name:插件名字
displayName:显示名称
description:插件描述
version:版本号
icon:图标
publisher:发布者
author:作者信息
name:作者名字
url:作者个人github主页
email:作者邮箱
homepage:主页
galleryBanner:与主题相关
badges:微章
包含的内容也就是总下载量、评级等之类的
指的链接大多为:
https://marketplace.visualstudio.com/items?itemName=Shan.code-settings-sync
其中有几个链接是404
没有什么很重要的,其中有一个链接为: https://codesettingssync.slack.com/
展示效果如下(实际上是Settings-Sync的一个社区):

代码图二:

repository:代码仓库
Type:版本控制类型(这里是使用git)
url:为对应的代码仓库地址
bugs:提交问题的地址
engines:指定项目运行的node版本范围
categories:
插件应用市场分类,可选值: [Programming Languages, Snippets, Linters, Themes, Debuggers, Formatters, Keymaps, SCM Providers, Other, Extension Packs, Language Packs]
Keywords:字符串数组,方便搜索该模块
activationEvents:是否激活该插件
通常有如下八种配置:
(1) onLanguage:${language}
(2) onCommand:${command}
(3) onDebug
(4) wordspaceContains:${toplevelfilename}
(5) onFileSystem:${scheme}
(6) onView:${viewld}
(7) onUri
(8) *(这里配置*,意思是只要一启动vscode,该插件就会被激活,通常官方不建议这样做)
main
main属性指定了程序的主入口文件。意思是,如果你的模块被命名为foo,用户安装了这个模块并通过require(“foo”)来使用这个模块,那么require返回的内容就是main属性指定的文件中module.exports指向的对象。
它应该指向模块根目录下的文件,对大多数模块而言,这个属性更多的是让模块又一个主入口,但是很多模块并不是这么写的。
采用这种写法的,以我们自己修改的一个插件,如下所示:
图一:

图二(extension.js):

图二调用图一中的,通常使用require即可调用
Contributes:
主要包含这么几类配置以供开发者使用:
Configuration:设置
Commands:命令
Menus:菜单
Keybindings:快捷键绑定
Language:新语言支持
Debuggers:调试
Breakpoints:断点
Themes:主题
Snippets:代码片段
jsonValidation:自定义JSON校验
views:左侧侧边栏视图
viewsContainers:自定义activitybar
代码图三:

scripts
scripts属性是一个对象,里边指定了项目的生命周期的各个环节需要执行的命令。Key是生命周期中的事件,value是要执行的命令。
参考相关文档(地址为: https://docs.npmjs.com/misc/scripts)
截图效果如下:

Dependencies:
Dependencies属性是一个对象,配置模块依赖的模块列表,key是模块名称,value是版本范围,版本范围是一个字符,可以被一个或多个空格分割。
Dependencies也可以被指定为一个git地址或者压缩包地址。
DevDependencies
与Dependencies,多了一个dev只不过表示是属于开发者环境
_metadata 元数据 包含的主要是开发者的发布ID和对外开放的名字
主要参考地址如下所示:
https://www.cnblogs.com/tzyy/p/5193811.html#_h1_20
https://www.cnblogs.com/liuxianan/p/vscode-plugin-package-json.html
https://blog.csdn.net/zrcj0706/article/details/79178371
4.package.nls.*.js文件详解
如图所示:

一共四个分别使用不同的语言
以package.nls.zh-cn.json来说(包含的提示信息为中文):

这里面的信息包含提示,也包含在vscode中使用ctrl+shift+p输入的命令中文提示,比如
如下图所示:

5.github源代码
Settings-Sync Github源代码地址为:https://github.com/shanalikhan/code-settings-sync
github上的源代码与插件源代码差别并不大(如果要说它们有什么差别的话,仅仅只是webpack打包压缩前后的区别)
webpack打包压缩前,src目录如下:

webpack打包压缩后就不存在src这个目录,因为src下的ts编译输出js,而js都被压缩成一个extension.js了。
注意事项:
通过git clone github上的源代码到本地,常见的错误就是ts报错找不到模块,最直接的解决办法是导入VsCode或者其它IDE,直接在终端或者命令行进入到该插件目录执行npm install 安装相关的包依赖,接着问题就会迎刃而解。
Settings-Sync插件源码阅读的更多相关文章
- Caddy源码阅读(二)启动流程与 Event 事件通知
Caddy源码阅读(二)启动流程与 Event 事件通知 Preface Caddy 是 Go 语言构建的轻量配置化服务器.https://github.com/caddyserver/caddy C ...
- SparkConf加载与SparkContext创建(源码阅读一)
即日起开始spark源码阅读之旅,这个过程是相当痛苦的,也许有大量的看不懂,但是每天一个方法,一点点看,相信总归会有极大地提高的.那么下面开始: 创建sparkConf对象,那么究竟它干了什么了类,从 ...
- 10 DelayQueue 延时队列类——Live555源码阅读(一)基本组件类
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 www.cnblogs.com/oloroso/ 本文由乌合 ...
- Netty源码阅读(一) ServerBootstrap启动
Netty源码阅读(一) ServerBootstrap启动 转自我的Github Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速 ...
- ubuntu下linux内核源码阅读工具和调试方法总结
http://blog.chinaunix.net/uid-20940095-id-66148.html 一 linux内核源码阅读工具 windows下当然首选source insight, 但是l ...
- kubernetes源码阅读及编译
kubernetes源码阅读 工欲善其事,必先利其器.在阅读kubernetes源码时,我也先后使用过多个IDE,最终还是停留在IDEA上. 我惯用的是pycharm(IDEA的python IDE版 ...
- Mac搭建Hadoop源码阅读环境
1.本次Hadoop源码阅读环境使用的阅读工具是idea,Hadoop版本是2.7.3.需要安装的工具包括idea.jdk.maven.protobuf等 2.jdk,使用的版本是1.8版,在jdk官 ...
- 【 js 基础 】【 源码学习 】backbone 源码阅读(一)
最近看完了 backbone.js 的源码,这里对于源码的细节就不再赘述了,大家可以 star 我的源码阅读项目(https://github.com/JiayiLi/source-code-stud ...
- 【 js 基础 】【 源码学习 】backbone 源码阅读(三)浅谈 REST 和 CRUD
最近看完了 backbone.js 的源码,这里对于源码的细节就不再赘述了,大家可以 star 我的源码阅读项目(https://github.com/JiayiLi/source-code-stud ...
随机推荐
- Link Between SAP SD, MM & FI
Link Between SAP SD, MM & FI 1. In SAP you will always get integration with other modules. SD wi ...
- SQL分组函数
分组函数是对表中的多行进行操作,而每组返回一个计算结果.常用的分组函数包括: 函数 语法格式 函数描述以及注意事项 AVG AVG([distinct|all] expr) 返回一个数字列或计算列的平 ...
- Android为TV端助力 清除本应用里的各种数据的方法
public class DataCleanManager { /** * * 清除本应用内部缓存(/data/data/com.xxx.xxx/cache) * * * * @param conte ...
- ERP项目应该由谁来主导?
前段时间在朋友圈看到了别人分享的公众号,主要是谈ERP项目应该由谁来主导的问题.文章的观点认为应该由哪个部门主导ERP的判断标准如下: 1.应该由一个期望上进的部门主导ERP项目: 2.应该由一个有话 ...
- SQL中触发器的使用
创建触发器 是特殊的存储过程,自动执行,一般不要有返回值 类型: 1.后触发器 (AFTER,FOR)先执行对应语句,后执行触发器中的语句 2.前触发器 并没有真正的执行触发语句(insert,up ...
- shell编程-文件包含(十)
shell文件包含指的是脚本中包含外部脚本,然后将其封装起来重新作为一个独立的文件而存在 文件包含格式 使用"."+空格+文件名:. filename 或者source+空格+文件 ...
- c/c++ 标准库 set 自定义关键字类型与比较函数
标准库 set 自定义关键字类型与比较函数 问题:哪些类型可以作为标准库set的关键字类型呢??? 答案: 1,任意类型,但是需要额外提供能够比较这种类型的比较函数. 2,这种类型实现了 < 操 ...
- Unity与安卓开发的一些路径知识
APK安装之后找不到路径 公司的测试机(安卓)基本都是不带SD卡的. APK在安卓手机上安装之后,使用手机助手类的软件打开文件管理,打开 内置SDK卡/Android/data/ 在这个目录下却发现 ...
- python3 requests + BeautifulSoup 爬取阳光网投诉贴详情实例代码
用到了requests.BeautifulSoup.urllib等,具体代码如下. # -*- coding: utf-8 -*- """ Created on Sat ...
- 特别篇:Hyper-v群集模拟实战演示
介绍 由于前面几张的都是直接整理了下 九叔的hyper-v电子书发上来的,个人觉得他写的不是最详细,因此今天我按照自己的实际情况来写个模拟的实战演示.所有的东西都通过VMware WorkStatio ...