{ // 扩展的名称:插件的名字,应全部小写,不能有空格 "name": "vscode-sshfs", // 扩展在 VSCode 中的显示名称:// 插件的友好显示名称,用于显示在应用市场,支持中文 "displayName": "SSH FS", // 扩展的描述,简要说明其功能,支持中文 "description": "File system, terminal and task provider using SSH", // 扩展的发布者名称:如果要发布到应用市场的话,这个名字必须与发布者一致 "publisher": "Kelvin", // 扩展的版本号 "version": "1.26.1", // 扩展支持的 VSCode 版本:表示插件最低支持的vscode版本 "engines": { "vscode": "^1.49.0" }, // 扩展的类别,这里被归类为 "Other":插件应用市场分类,可选值: [Programming Languages, Snippets, Linters, Themes, Debuggers, Formatters, Keymaps, SCM Providers, Other, Extension Packs, Language Packs] "categories": [ "Other" ], // 定义扩展的激活事件:扩展的激活事件数组,可以被哪些事件激活扩展。在 VSCode 中,这些事件会触发扩展的激活。 "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": { // 自定义侧边栏内view的实现:定义扩展的视图部分 "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" } ] }, // 自定义新的activitybar图标,也就是左侧侧边栏大的图标:定义扩展的视图容器,用于在 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", "when": "sshfs.openConnections > 0" } ] }, // 定义配置部分,包含多个配置属性 "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", "@types/semver": "^7.3.9", "@types/vscode": "~1.49.0", "@types/webpack": "^4.4.25", "@types/winreg": "^1.2.30", "@vscode/vsce": "^2.18.0", "prettier": "^2.6.2", "source-map": "^0.7.3", "source-map-support": "^0.5.19", "ts-loader": "^9.4.2", "typescript": "~5.0.2", "webpack": "^5.76.3", "webpack-cli": "^5.0.1" }, // 定义项目的依赖项 "dependencies": { "common": "workspace:*", "event-stream": "^4.0.1", "jsonc-parser": "^3.2.0", "semver": "^7.3.5", "socks": "^2.2.0", "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" }