Settings-Sync插件源码阅读

时间:2023-01-30 01:29:11

一、介绍

请参考官网:

https://marketplace.visualstudio.com/items?itemName=Shan.code-settings-sync

二、源码目录详解

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文件

Settings-Sync插件源码阅读

travis 的配置文件,travis 是一种可持续集成(CI)工具,代码提交后自动构建,与github集成

看图已知是构建集成

包括构建插件所需的环境、打包部署等

关于travis可以参考该链接了解: https://travis-ci.org/

其中script中bash scripts/deploy.sh执行的是部署命令

代码如图:

Settings-Sync插件源码阅读

Npm dedupe 重新计算依赖关系

Npm up 检查版本更新

Npm install -g vsce 全局安装

Printf或echo主要是输出

vsce publish 发布命令

插件制作与发布可以参考该文章: https://segmentfault.com/a/1190000014758981

2. .vsixmanifest

项目模板文件与xml有很大的相似之处

Settings-Sync插件源码阅读

3.package.json

代码图一:

Settings-Sync插件源码阅读

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的一个社区):

Settings-Sync插件源码阅读

代码图二:

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指向的对象。

它应该指向模块根目录下的文件,对大多数模块而言,这个属性更多的是让模块又一个主入口,但是很多模块并不是这么写的。

采用这种写法的,以我们自己修改的一个插件,如下所示:

图一:

Settings-Sync插件源码阅读

图二(extension.js):

Settings-Sync插件源码阅读

图二调用图一中的,通常使用require即可调用

Contributes:

主要包含这么几类配置以供开发者使用:

Configuration:设置

Commands:命令

Menus:菜单

Keybindings:快捷键绑定

Language:新语言支持

Debuggers:调试

Breakpoints:断点

Themes:主题

Snippets:代码片段

jsonValidation:自定义JSON校验

views:左侧侧边栏视图

viewsContainers:自定义activitybar

代码图三:

Settings-Sync插件源码阅读

scripts

scripts属性是一个对象,里边指定了项目的生命周期的各个环节需要执行的命令。Key是生命周期中的事件,value是要执行的命令。

参考相关文档(地址为: https://docs.npmjs.com/misc/scripts)

截图效果如下:

Settings-Sync插件源码阅读

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文件详解

如图所示:

Settings-Sync插件源码阅读

一共四个分别使用不同的语言

以package.nls.zh-cn.json来说(包含的提示信息为中文):

Settings-Sync插件源码阅读

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

如下图所示:

Settings-Sync插件源码阅读

5.github源代码

Settings-Sync Github源代码地址为:https://github.com/shanalikhan/code-settings-sync

github上的源代码与插件源代码差别并不大(如果要说它们有什么差别的话,仅仅只是webpack打包压缩前后的区别)

webpack打包压缩前,src目录如下:

Settings-Sync插件源码阅读

webpack打包压缩后就不存在src这个目录,因为src下的ts编译输出js,而js都被压缩成一个extension.js了。

注意事项:

通过git clone github上的源代码到本地,常见的错误就是ts报错找不到模块,最直接的解决办法是导入VsCode或者其它IDE,直接在终端或者命令行进入到该插件目录执行npm install 安装相关的包依赖,接着问题就会迎刃而解。

Settings-Sync插件源码阅读的更多相关文章

  1. Caddy源码阅读(二)启动流程与 Event 事件通知

    Caddy源码阅读(二)启动流程与 Event 事件通知 Preface Caddy 是 Go 语言构建的轻量配置化服务器.https://github.com/caddyserver/caddy C ...

  2. SparkConf加载与SparkContext创建(源码阅读一)

    即日起开始spark源码阅读之旅,这个过程是相当痛苦的,也许有大量的看不懂,但是每天一个方法,一点点看,相信总归会有极大地提高的.那么下面开始: 创建sparkConf对象,那么究竟它干了什么了类,从 ...

  3. 10 DelayQueue 延时队列类——Live555源码阅读(一)基本组件类

    这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 www.cnblogs.com/oloroso/ 本文由乌合 ...

  4. Netty源码阅读(一) ServerBootstrap启动

    Netty源码阅读(一) ServerBootstrap启动 转自我的Github Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速 ...

  5. ubuntu下linux内核源码阅读工具和调试方法总结

    http://blog.chinaunix.net/uid-20940095-id-66148.html 一 linux内核源码阅读工具 windows下当然首选source insight, 但是l ...

  6. kubernetes源码阅读及编译

    kubernetes源码阅读 工欲善其事,必先利其器.在阅读kubernetes源码时,我也先后使用过多个IDE,最终还是停留在IDEA上. 我惯用的是pycharm(IDEA的python IDE版 ...

  7. Mac搭建Hadoop源码阅读环境

    1.本次Hadoop源码阅读环境使用的阅读工具是idea,Hadoop版本是2.7.3.需要安装的工具包括idea.jdk.maven.protobuf等 2.jdk,使用的版本是1.8版,在jdk官 ...

  8. 【 js 基础 】【 源码学习 】backbone 源码阅读(一)

    最近看完了 backbone.js 的源码,这里对于源码的细节就不再赘述了,大家可以 star 我的源码阅读项目(https://github.com/JiayiLi/source-code-stud ...

  9. 【 js 基础 】【 源码学习 】backbone 源码阅读(三)浅谈 REST 和 CRUD

    最近看完了 backbone.js 的源码,这里对于源码的细节就不再赘述了,大家可以 star 我的源码阅读项目(https://github.com/JiayiLi/source-code-stud ...

随机推荐

  1. 学习Maven之Properties Maven Plugin

    1.properties-maven-plugin是个什么鬼? 介绍前我们先看一个问题,比如我们有一个maven项目结构如下: 一般我们都把一些配置文件放到像src/main/resources/jd ...

  2. 在CentOS 6.7中安装 latex2html, 实现 latex 自动转化为 word

    由于latex文档生成的pdf不便于提供审阅和修改,亟需一个软件实现从latex向word文档的自动转换( 如何把Latex自动转为Word 介绍了由latex2html 可实现这个功能,这也是初衷) ...

  3. html+css 技巧

    3.css定义的技巧:[1].为了将来的css代码优化,建议所有的属性上要带上“:” [2].某些html 标签,有自己默认的css属性值,       例如h1 标签就有自己的属性值,自动就是加粗显 ...

  4. php json_encode数据格式化2种格式[]和{}

    在php中,json格式化数据后,会出现2种形式数据: 1.当array是一个从0开始的连续数组时,json_encode的结果是一个由[]括起来的字符串 $arr = array('a' , 'b' ...

  5. Oracle错误——ORA-39000:转储文件说明错误、ORA-39001:参数值无效、ORA-39088:文件名不能包含路径说明

    错误 在使用数据泵导入文件时,报错如下 Next 出错原因 在使用参数DUMPFILE指定文件名称时,不能包含路径信息,只可以使用文件名称 Next 解决办法 在使用数据泵进行数据导入导出前,必须要创 ...

  6. lsof详解

    from:https://www.cnblogs.com/the-study-of-linux/p/5501593.html lsof (list open files)是一个列出当前系统打开文件的工 ...

  7. C# .NET - Sql Bulk Insert from multiple delimited Textfile using c#.net

    SqlBulkCopy.WriteToServer has 4 overloads:SqlBulkCopy.WriteToServer (DataRow[])    Copies all rows f ...

  8. Qt网络编程QTcpServer和QTcpSocket的理解

    前一段时间通过调试Qt源码,大致了解了Qt的事件机制.信号槽机制.毕竟能力和时间有限.有些地方理解的并不是很清楚. 开发环境:Linux((fedora 17),Qt版本(qt-everywhere- ...

  9. linux交叉编译gcc4.8.3

    1.环境: Ubuntu 16.04 2.获取 wget mirrors.ustc.edu.cn/gnu/gcc/gcc-4.8.3/gcc-4.8.3.tar.bz2 3.解压 tar xvf gc ...

  10. sql 数据库修复

    数据库修复 exec sp_dboption 'dbname1','single user',‘true’ dbcc checkdb('dbname1') dbcc checkdb('dbname1' ...