diff --git a/package.json b/package.json index 1629798..88c9e3d 100644 --- a/package.json +++ b/package.json @@ -1,315 +1,465 @@ { + // 扩展的名称 "name": "vscode-sshfs", + // 扩展在 VSCode 中的显示名称 "displayName": "SSH FS", + // 扩展的描述,简要说明其功能 "description": "File system, terminal and task provider using SSH", + // 扩展的发布者名称 "publisher": "Kelvin", + // 扩展的版本号 "version": "1.26.1", + // 扩展支持的 VSCode 版本 "engines": { "vscode": "^1.49.0" }, + // 扩展的类别,这里被归类为 "Other" "categories": [ "Other" ], + // 定义扩展的激活事件 "activationEvents": [ + // 当访问 SSH 文件系统时触发 "onFileSystem:ssh", + // 当访问 SSH 文件系统时触发 "onFileSystemAccess:ssh", + // 当打开 SSH FS 配置视图时触发 "onView:sshfs-configs", + // 当打开 SSH FS 连接视图时触发 "onView:sshfs-connections", + // 当执行 sshfs.new 命令时触发 "onCommand:sshfs.new", + // 当执行 sshfs.add 命令时触发 "onCommand:sshfs.add", + // 当执行 sshfs.disconnect 命令时触发 "onCommand:sshfs.disconnect", + // 当执行 sshfs.disconnectAll 命令时触发 "onCommand:sshfs.disconnectAll", + // 当执行 sshfs.terminal 命令时触发 "onCommand:sshfs.terminal", + // 当执行 sshfs.focusTerminal 命令时触发 "onCommand:sshfs.focusTerminal", + // 当执行 sshfs.closeTerminal 命令时触发 "onCommand:sshfs.closeTerminal", + // 当执行 sshfs.configure 命令时触发 "onCommand:sshfs.configure", + // 当执行 sshfs.reload 命令时触发 "onCommand:sshfs.reload", + // 当执行 sshfs.settings 命令时触发 "onCommand:sshfs.settings", + // 当执行 sshfs.refresh 命令时触发 "onCommand:sshfs.refresh" ], + // 定义扩展的入口文件 "main": "./dist/extension.js", + // 扩展的主页链接 "homepage": "https://github.com/SchoofsKelvin/vscode-sshfs", + // 扩展的作者信息 "author": { + // 作者姓名 "name": "Kelvin Schoofs", + // 作者邮箱 "email": "schoofs.kelvin@gmail.com", + // 作者的 GitHub 主页 "url": "https://github.com/SchoofsKelvin" }, + // 扩展的仓库信息 "repository": { + // 仓库类型,这里是 git "type": "git", + // 仓库的 URL "url": "https://github.com/SchoofsKelvin/vscode-sshfs" }, + // 扩展的 Bug 反馈链接 "bugs": { + // Bug 反馈的 URL "url": "https://github.com/SchoofsKelvin/vscode-sshfs/issues" }, + // 扩展的许可证信息 "license": "GPL-3.0", + // 扩展的图标文件路径 "icon": "resources/Logo.png", + // 定义扩展的关键词,这些关键词有助于用户在 VSCode 市场中搜索到该扩展 "keywords": [ + // 表示该扩展与远程操作相关 "remote", + // 表示该扩展使用 SSH 协议进行通信 "ssh", + // 表示该扩展使用 SSH 文件系统(SSHFS) "sshfs", + // 表示该扩展支持文件同步功能 "sync", + // 表示该扩展提供文件系统相关的功能 "filesystem", + // 表示该扩展提供终端相关的功能 "terminal", + // 表示该扩展支持 SFTP 协议 "sftp", + // 表示该扩展支持 SCP 协议 "scp" ], + // 定义扩展的徽章,用于展示扩展的一些关键信息 "badges": [ + // GitHub 版本徽章,显示最新版本和预发布版本 { "url": "https://img.shields.io/github/v/release/SchoofsKelvin/vscode-sshfs?include_prereleases&label=GitHub%20version", "href": "https://github.com/SchoofsKelvin/vscode-sshfs/releases", "description": "Releases on GitHub" }, + // Open VSX 版本徽章,显示 Open VSX 上的版本 { "url": "https://img.shields.io/open-vsx/v/Kelvin/vscode-sshfs?label=Open%20VSX", "href": "https://open-vsx.org/extension/Kelvin/vscode-sshfs", "description": "Open VSX Registry" }, + // Visual Studio Marketplace 版本徽章,显示 Visual Studio Marketplace 上的版本 { "url": "https://img.shields.io/visual-studio-marketplace/v/Kelvin.vscode-sshfs?label=VS%20Marketplace&logo=sdf", "href": "https://marketplace.visualstudio.com/items?itemName=Kelvin.vscode-sshfs", "description": "Visual Studio Marketplace" }, + // Visual Studio Marketplace 安装量徽章,显示 Visual Studio Marketplace 上的安装量 { "url": "https://img.shields.io/visual-studio-marketplace/i/Kelvin.vscode-sshfs?label=Installs", "href": "https://marketplace.visualstudio.com/items?itemName=Kelvin.vscode-sshfs", "description": "Unique installs using Visual Studio Marketplace" } ], + // 定义扩展的赞助信息,用于展示扩展的赞助链接 "sponsor": { + // 赞助链接的 URL "url": "https://github.com/sponsors/SchoofsKelvin" }, + // 定义扩展的贡献点,用于扩展在 VSCode 中的功能和交互 "contributes": { + // 定义扩展的视图部分 "views": { + // 定义名为 sshfs 的视图容器 "sshfs": [ { + // 视图的唯一标识符 "id": "sshfs-configs", + // 视图的显示名称 "name": "Configurations", + // 视图的上下文标题 "contextualTitle": "SSH FS - Configurations", + // 视图的图标路径 "icon": "resources/icon.svg", + // 视图的可见性 "visibility": "visible" }, { + // 视图的唯一标识符 "id": "sshfs-connections", + // 视图的显示名称 "name": "Connections", + // 视图的上下文标题 "contextualTitle": "SSH FS - Connections", + // 视图的图标路径 "icon": "resources/icon.svg", + // 视图的可见性 "visibility": "visible" } ] }, + // 定义扩展的视图容器,用于在 VSCode 的活动栏中展示 "viewsContainers": { + // 在活动栏中添加一个名为 sshfs 的视图容器 "activitybar": [ { + // 视图容器的唯一标识符 "id": "sshfs", + // 视图容器的标题 "title": "SSH FS", + // 视图容器的图标路径 "icon": "resources/icon.svg" } ] }, + // 定义一系列命令,用于在 VSCode 中执行与 SSH FS 相关的操作 "commands": [ { + // 命令的标识符,用于在其他地方引用该命令 "command": "sshfs.new", + // 命令在菜单中显示的名称 "title": "Create a SSH FS configuration", + // 命令所属的类别,用于在命令面板中分组 "category": "SSH FS", + // 命令的图标,使用 VSCode 内置的图标 "icon": "$(new-file)" }, { + // 命令的标识符,用于在其他地方引用该命令 "command": "sshfs.add", + // 命令在菜单中显示的名称 "title": "Add as Workspace folder", + // 命令所属的类别,用于在命令面板中分组 "category": "SSH FS", + // 命令的图标,使用 VSCode 内置的图标 "icon": "$(new-folder)" }, { + // 命令的标识符,用于在其他地方引用该命令 "command": "sshfs.disconnect", + // 命令在菜单中显示的名称 "title": "Disconnect", + // 命令所属的类别,用于在命令面板中分组 "category": "SSH FS", + // 命令的图标,使用 VSCode 内置的图标 "icon": "$(debug-disconnect)" }, { + // 命令的标识符,用于在其他地方引用该命令 "command": "sshfs.disconnectAll", + // 命令在菜单中显示的名称 "title": "Disconnect all", + // 命令所属的类别,用于在命令面板中分组 "category": "SSH FS", + // 命令的图标,使用 VSCode 内置的图标 "icon": "$(debug-disconnect)" }, { + // 命令的标识符,用于在其他地方引用该命令 "command": "sshfs.terminal", + // 命令在菜单中显示的名称 "title": "Open remote SSH terminal", + // 命令所属的类别,用于在命令面板中分组 "category": "SSH FS", + // 命令的图标,使用 VSCode 内置的图标 "icon": "$(terminal)" }, { + // 命令的标识符,用于在其他地方引用该命令 "command": "sshfs.configure", + // 命令在菜单中显示的名称 "title": "Edit configuration", + // 命令所属的类别,用于在命令面板中分组 "category": "SSH FS", + // 命令的图标,使用 VSCode 内置的图标 "icon": "$(settings-gear)" }, { + // 命令的标识符,用于在其他地方引用该命令 "command": "sshfs.reload", + // 命令在菜单中显示的名称 "title": "Reload configurations", + // 命令所属的类别,用于在命令面板中分组 "category": "SSH FS", + // 命令的图标,使用 VSCode 内置的图标 "icon": "$(refresh)" }, { + // 命令的标识符,用于在其他地方引用该命令 "command": "sshfs.settings", + // 命令在菜单中显示的名称 "title": "Open settings and edit configurations", + // 命令所属的类别,用于在命令面板中分组 "category": "SSH FS", + // 命令的图标,使用 VSCode 内置的图标 "icon": "$(settings)" }, { + // 命令的标识符,用于在其他地方引用该命令 "command": "sshfs.refresh", + // 命令在菜单中显示的名称 "title": "Refresh", + // 命令所属的类别,用于在命令面板中分组 "category": "SSH FS", + // 命令的图标,使用 VSCode 内置的图标 "icon": "$(refresh)" }, { + // 命令的标识符,用于在其他地方引用该命令 "command": "sshfs.focusTerminal", + // 命令在菜单中显示的名称 "title": "Focus terminal", + // 命令所属的类别,用于在命令面板中分组 "category": "SSH FS", + // 命令的图标,使用 VSCode 内置的图标 "icon": "$(eye)" }, { + // 命令的标识符,用于在其他地方引用该命令 "command": "sshfs.closeTerminal", + // 命令在菜单中显示的名称 "title": "Close terminal", + // 命令所属的类别,用于在命令面板中分组 "category": "SSH FS", + // 命令的图标,使用 VSCode 内置的图标 "icon": "$(close)" } ], + // 定义一个名为 menus 的对象,用于配置命令面板 "menus": { + // 定义一个名为 commandPalette 的数组,用于配置命令面板中的命令 "commandPalette": [ + // 配置一个名为 sshfs.new 的命令,该命令属于 SSH FS 类别,分组为 1 { "command": "sshfs.new", "group": "SSH FS@1" }, + // 配置一个名为 sshfs.add 的命令,该命令属于 SSH FS 类别,分组为 2 { "command": "sshfs.add", "group": "SSH FS@2" }, + // 配置一个名为 sshfs.disconnect 的命令,该命令属于 SSH FS 类别,分组为 3 { "command": "sshfs.disconnect", "group": "SSH FS@3" }, + // 配置一个名为 sshfs.terminal 的命令,该命令属于 SSH FS 类别,分组为 4 { "command": "sshfs.terminal", "group": "SSH FS@4" }, + // 配置一个名为 sshfs.configure 的命令,该命令属于 SSH FS 类别,分组为 5 { "command": "sshfs.configure", "group": "SSH FS@5" }, + // 配置一个名为 sshfs.reload 的命令,该命令属于 SSH FS 类别,分组为 6 { "command": "sshfs.reload", "group": "SSH FS@6" }, + // 配置一个名为 sshfs.disconnectAll 的命令,该命令属于 SSH FS 类别,分组为 7 { "command": "sshfs.disconnectAll", "group": "SSH FS@7" }, + // 配置一个名为 sshfs.settings 的命令,该命令属于 SSH FS 类别,分组为 8 { "command": "sshfs.settings", "group": "SSH FS@8" }, + // 配置一个名为 sshfs.focusTerminal 的命令,该命令在特定条件下可用 { "command": "sshfs.focusTerminal", "when": "false" }, + // 配置一个名为 sshfs.closeTerminal 的命令,该命令在特定条件下可用 { "command": "sshfs.closeTerminal", "when": "false" }, + // 配置一个名为 sshfs.refresh 的命令,该命令在特定条件下可用 { "command": "sshfs.refresh", "when": "false" } ], + // 定义一个名为 view/title 的数组,用于配置视图标题栏中的命令 "view/title": [ + // 配置一个名为 sshfs.refresh 的命令,该命令在视图为 'sshfs-configs' 或 'sshfs-connections' 时可用,属于导航分组,优先级为 1 { "command": "sshfs.refresh", "when": "view == 'sshfs-configs' || view == 'sshfs-connections'", "group": "navigation@1" }, + // 配置一个名为 sshfs.new 的命令,该命令在视图为 'sshfs-configs' 时可用,属于导航分组,优先级为 2 { "command": "sshfs.new", "when": "view == 'sshfs-configs'", "group": "navigation@2" }, + // 配置一个名为 sshfs.add 的命令,该命令在视图为 'sshfs-connections' 时可用,属于导航分组,优先级为 2 { "command": "sshfs.add", "when": "view == 'sshfs-connections'", "group": "navigation@2" }, + // 配置一个名为 sshfs.disconnectAll 的命令,该命令在视图为 'sshfs-connections' 时可用,属于导航分组,优先级为 3 { "command": "sshfs.disconnectAll", "when": "view == 'sshfs-connections'", "group": "navigation@3" }, + // 配置一个名为 sshfs.settings 的命令,该命令在视图为 'sshfs-configs' 或 'sshfs-connections' 时可用,属于导航分组,优先级为 100 { "command": "sshfs.settings", "when": "view == 'sshfs-configs' || view == 'sshfs-connections'", "group": "navigation@100" } ], + // 定义在视图项的上下文中显示的命令 "view/item/context": [ + // 当视图为 'sshfs-configs' 且选中项为 'config' 时,显示 '添加' 命令 { "command": "sshfs.add", "when": "view == 'sshfs-configs' && viewItem == config", "group": "inline@1" }, + // 当视图为 'sshfs-configs' 且选中项为 'config' 时,显示 '终端' 命令 { "command": "sshfs.terminal", "when": "view == 'sshfs-configs' && viewItem == config", "group": "inline@2" }, + // 当视图为 'sshfs-configs' 且选中项为 'config' 时,显示 '配置' 命令 { "command": "sshfs.configure", "when": "view == 'sshfs-configs' && viewItem == config", "group": "inline@3" }, + // 当视图为 'sshfs-configs' 且选中项为 'config' 时,显示 '断开连接' 命令 { "command": "sshfs.disconnect", "when": "view == 'sshfs-configs' && viewItem == config", "group": "inline@4" }, + // 当视图为 'sshfs-connections' 且选中项为 'connection' 时,显示 '终端' 命令 { "command": "sshfs.terminal", "when": "view == 'sshfs-connections' && viewItem == connection", "group": "inline@1" }, + // 当视图为 'sshfs-connections' 且选中项为 'connection' 时,显示 '断开连接' 命令 { "command": "sshfs.disconnect", "when": "view == 'sshfs-connections' && viewItem == connection", "group": "inline@2" }, + // 当视图为 'sshfs-connections' 且选中项为 'terminal' 时,显示 '关闭终端' 命令 { "command": "sshfs.closeTerminal", "when": "view == 'sshfs-connections' && viewItem == terminal", "group": "inline@1" } ], + // 定义在资源管理器的上下文菜单中显示的命令 "explorer/context": [ + // 配置一个名为 sshfs.terminal 的命令,该命令在资源管理器中选中的资源是一个文件夹且资源的协议是 ssh 时可用,属于导航分组,优先级为 30 { "command": "sshfs.terminal", "when": "explorerResourceIsFolder && resourceScheme == ssh", "group": "navigation@30" } ], + // 定义在状态栏的远程指示器中显示的命令 "statusBar/remoteIndicator": [ + // 配置一个名为 sshfs.add 的命令,该命令属于 remote_11_ssh_sshfs 分组,优先级为 1 { "command": "sshfs.add", "group": "remote_11_ssh_sshfs@1" }, + // 配置一个名为 sshfs.terminal 的命令,该命令属于 remote_11_ssh_sshfs 分组,优先级为 2 { "command": "sshfs.terminal", "group": "remote_11_ssh_sshfs@2" }, + // 配置一个名为 sshfs.settings 的命令,该命令属于 remote_11_ssh_sshfs 分组,优先级为 3 { "command": "sshfs.settings", "group": "remote_11_ssh_sshfs@3" }, + // 配置一个名为 sshfs.disconnect 的命令,该命令属于 remote_11_ssh_sshfs 分组,优先级为 4,仅在 sshfs.openConnections 大于 0 时显示 { "command": "sshfs.disconnect", "group": "remote_11_ssh_sshfs@4", "when": "sshfs.openConnections > 0" }, + // 配置一个名为 sshfs.disconnectAll 的命令,该命令属于 remote_11_ssh_sshfs 分组,优先级为 5,仅在 sshfs.openConnections 大于 0 时显示 { "command": "sshfs.disconnectAll", "group": "remote_11_ssh_sshfs@5", @@ -317,99 +467,166 @@ } ] }, + // 定义配置部分,包含多个配置属性 "configuration": { + // 配置部分的标题 "title": "SSH FS Configuration", + // 配置属性的定义 "properties": { + // 定义一个名为 sshfs.configpaths 的属性,用于指定加载 SSH FS 配置的文件位置列表 "sshfs.configpaths": { + // 属性的标题 "title": "A list of file locations to load SSH FS configurations from", + // 属性的描述 "description": "Location of JSON files to load configs from", + // 属性的数据类型 "type": "array", + // 数组元素的数据类型 "items": "string", + // 属性的默认值 "default": [] }, + // 定义一个名为 sshfs.configs 的属性,用于指定 SSH FS 的配置列表 "sshfs.configs": { + // 属性的标题 "title": "A list of SSH FS configurations", + // 属性的描述 "description": "Use the Settings UI to edit configurations (run command SSH FS: Open settings and edit configurations)", + // 属性的 Markdown 描述 "markdownDescription": "Use the Settings UI to edit configurations *(run command `SSH FS: Open settings and edit configurations`)*", + // 属性的数据类型 "type": "array", + // 数组元素的数据类型 "items": "object", + // 属性的默认值 "default": [ { + // 配置项的根目录 "root": "/tmp", + // 配置项的主机名 "host": "localhost", + // 配置项的端口号 "port": 22, + // 配置项的用户名 "username": "root", + // 配置项的密码 "password": "CorrectHorseBatteryStaple" } ] }, + // 定义一个名为 sshfs.flags 的属性,用于指定启用或禁用某些修复/功能的特殊标志列表 "sshfs.flags": { + // 属性的标题 "title": "List of special flags to enable/disable certain fixes/features", + // 属性的描述 "description": "Flags are usually used for issues or beta testing. Flags can disappear/change anytime!", + // 属性的数据类型 "type": "array", + // 数组元素的数据类型 "items": "string", + // 属性的默认值 "default": [] } } }, + // 定义任务类型,用于在 SSH 连接上执行命令 "taskDefinitions": [ { + // 任务类型的名称 "type": "ssh-shell", + // 任务的属性 "properties": { + // 主机配置,用于指定执行任务的 SSH 配置名称 "host": { + // 属性的数据类型 "type": "string", + // 属性的描述 "description": "The configuration (name) to run this task on" }, + // 命令,用于指定要在服务器上运行的命令 "command": { + // 属性的数据类型 "type": "string", + // 属性的描述 "description": "The command to run on the server" }, + // 工作目录,用于指定命令执行的相对路径(相对于配置定义的根目录) "workingDirectory": { + // 属性的数据类型 "type": "string", + // 属性的描述 "description": "The working directory (relative to the config-defined root) to run the command in" } }, + // 任务所需的必要属性 "required": [ + // 主机配置是必需的 "host", + // 命令是必需的 "command" ] } ], + // 定义资源标签格式化器,用于格式化 SSH 资源的标签 "resourceLabelFormatters": [ { + // 指定格式化器适用的协议为 ssh "scheme": "ssh", + // 定义格式化规则 "formatting": { + // 标签的格式,使用模板字符串,包含协议、认证信息和路径 "label": "${scheme}://${authority}/${path}", + // 路径分隔符,这里设置为 / "separator": "/", + // 是否将路径转换为波浪号表示法(~),这里设置为 false "tildify": false, + // 是否去除路径开头的分隔符,这里设置为 true "stripPathStartingSeparator": true, + // 工作区后缀,这里设置为 SSH FS "workspaceSuffix": "SSH FS" } } ], + // 定义一个名为 viewsWelcome 的属性,它包含了一个数组,数组中的每个元素都是一个对象,这些对象定义了在特定视图中显示的欢迎内容 "viewsWelcome": [ + // 第一个元素定义了在 sshfs-configs 视图中显示的欢迎内容 { + // 定义视图的名称 "view": "sshfs-configs", + // 定义视图的内容 "contents": "No configurations created yet" }, + // 第二个元素定义了在 sshfs-connections 视图中显示的欢迎内容 { + // 定义视图的名称 "view": "sshfs-connections", + // 定义视图的内容 "contents": "Not connected to anything" } ] }, + // 定义扩展的功能 "capabilities": { + // 支持虚拟工作区 "virtualWorkspaces": true, + // 支持不受信任的工作区 "untrustedWorkspaces": { + // 支持不受信任的工作区 "supported": true } }, + // 定义脚本命令,用于在开发和发布过程中执行特定的任务 "scripts": { + // 在发布前执行的脚本,用于在每个工作区中运行构建命令 "vscode:prepublish": "yarn workspaces foreach -tvip -j 2 run build", + // 用于生成生产环境的构建版本 "build": "webpack --mode production", + // 用于生成开发环境的构建版本 "compile": "webpack --mode development", + // 用于在开发环境中持续监视文件变化并自动重新构建 "watch": "webpack --mode development --watch" }, + // 定义开发依赖项,这些依赖项是在开发过程中需要的工具和库 "devDependencies": { "@types/node": "^12.7.12", "@types/request": "^2.48.1", @@ -426,6 +643,7 @@ "webpack": "^5.76.3", "webpack-cli": "^5.0.1" }, + // 定义项目的依赖项 "dependencies": { "common": "workspace:*", "event-stream": "^4.0.1", @@ -435,13 +653,18 @@ "ssh2": "^1.11.0", "winreg": "^1.2.4" }, + // 定义依赖项解析策略,确保特定依赖项的版本或补丁被正确应用 "resolutions": { "cpu-features": "npm:@favware/skip-dependency@1.1.3", "ssh2@^1.11.0": "patch:ssh2@npm%3A1.11.0#./.yarn/patches/ssh2-npm-1.11.0-convertSha1.patch" }, + // 定义项目的工作区,包含多个子项目 "workspaces": [ + // 第一个子项目,位于当前目录下的 common 文件夹 "./common", + // 第二个子项目,位于当前目录下的 webview 文件夹 "./webview" ], + // 定义项目使用的包管理器及其版本 "packageManager": "yarn@3.5.0" }