2-4 扩展离线安装&下载vsocde所有的插件思路
单个插件离线安装
在无网络的生产环境中,VS Code 插件的离线安装是必备技能。
操作步骤
- 打开 VS Code Extension Marketplace,搜索目标插件
- 点击右侧的
Download Extension按钮,下载得到.vsix文件 - 将
.vsix文件拷贝到目标机器 - 在 VS Code 中打开扩展面板,点击右上角
...(三个点),选择Install from VSIX... - 选中下载的文件,完成安装
批量下载思路
Marketplace 不提供批量导出功能,但可以通过分析下载链接的规律来实现批量下载。
分析下载链接
VS Code 扩展的下载链接格式如下:
https://<publisher>.gallery.vsassets.io/_apis/public/gallery/publisher/<creator>/extension/<name>/<version>/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage
text
其中变化的三个参数分别是:
| 参数 | 说明 | 示例 |
|---|---|---|
creator | 发布者(publisher) | DS |
name | 插件名称 | blackbox |
version | 版本号 | 1.44 |
获取本地插件列表
VS Code 自带命令可以列出所有已安装插件及其版本:
code --list-extensions --show-versions
bash
输出格式为 creator.name@version,例如:
DS.blackbox@1.44
esbenp.prettier-vscode@10.1.0
dbaeumer.vscode-eslint@2.4.2
text
实现思路
- 使用
code --list-extensions --show-versions获取所有插件的 creator、name、version - 通过正则表达式解析每一行数据
- 按照下载链接格式拼接 URL
- 使用 Node.js 脚本批量下载所有
.vsix文件到本地目录
核心代码结构
// 使用 child_process 执行 code 命令
import { exec } from 'child_process'
import { promisify } from 'util'
const execCmd = promisify(exec)
async function main() {
// 1. 获取所有扩展列表
const { stdout } = await execCmd('code --list-extensions --show-versions')
// 2. 解析每行数据为 { creator, name, version }
const extensions = stdout
.split('\n')
.filter(line => line.trim())
.map(parseExtension)
// 3. 创建 downloads 目录
// 4. 批量下载每个扩展的 .vsix 文件
}
javascript
正则解析
code --list-extensions --show-versions 输出格式为 creator.name@version:
function parseExtension(str) {
const regex = /^([a-zA-Z0-9-]+)\.([a-zA-Z0-9-]+)@(.+)$/
const match = str.match(regex)
return {
creator: match[1],
name: match[2],
version: match[3]
}
}
javascript
vsext CLI 工具
基于上述思路,社区开发了 vsext 命令行工具,将下载和安装封装为两个简单命令。
安装
npm i -g vsext
bash
下载当前已安装的所有插件
vsext d
bash
执行后将所有已安装插件的压缩包下载到当前目录。
安装已下载的离线插件
vsext i
bash
安装 downloads 目录中的所有插件文件。
手动批量安装
如果不使用 vsext,也可以手动通过 code --install-extension 命令批量安装:
# 安装单个扩展
code --install-extension ./downloads/DS.blackbox-1.44.vsix
# 批量安装(遍历目录下所有 .vsix 文件)
for f in downloads/*.vsix; do code --install-extension "$f"; done
bash
注意事项
code命令需要在 PATH 中可用。如果不可用,在 VS Code 中按Ctrl+Shift+P,搜索Shell Command: Install 'code' command in PATH- 下载链接中的 creator 大小写敏感,需要与 Marketplace 上的一致
- 部分插件可能有平台差异(如 C++ 扩展),需注意下载对应平台的版本
参考资源
- VS Code Extension Marketplace - 插件市场
- VS Code CLI 文档 - 命令行参数说明
↑