前言 ✨
因为我经常需要在离线环境开发项目,经常需要将vscode
的插件传进去进行安装,之前采用的方案都是通过复制外网。vscode
里面的extensions
文件夹,将其传进去覆盖来实现的。
但是这种方式需要知道vscode
安装位置,并且最新版覆盖进去的时候不知道为什么,插件是有了,但是没有在插件列表里面显示出来。处理起来也比较麻烦。于是打算直接去下载插件的visix
包。
一个个下又非常麻烦,于是诞生了这个工具。
项目地址 📦
如果对你有帮助的话,请帮我点一个 star ⭐
一个用于批量下载 VSCode 插件 vsix 包的实用工具,支持离线环境快速安装插件。
名称 | 链接 |
---|---|
GitHub仓库 | leixq1024/vscode-vsix-download |
使用文档 | README |

实现思路 🛠️
- 通过命令行获取本地已安装的 VSCode 插件列表及版本信息。
- 利用 Open VSX Registry 构建每个插件的 vsix 下载链接。
- 批量下载所有插件的 vsix 安装包,保存到本地文件夹,便于离线环境安装。
核心代码介绍 💻
获取vscode已安装的插件列表 📋
通过命令行中的code --list-extensions --show-versions
命令,可以获取到当前vscode插件的列表。
css
code --list-extensions --show-versions
像下面这样,其中你可以看到版本号和插件名称。

通过这个命令获取到插件列表之后,用代码处理一下格式。
js
const { execSync } = require("child_process");
const getExtensions = () => {
try {
// 执行命令获取插件列表
const output = execSync("code --list-extensions --show-versions", { encoding: "utf-8" });
return output
.split("\n")
.filter(Boolean)
.map(line => {
// 解析每一行,格式为 publisher.extension@version
const match = line.match(/^([^.]+)\.([^\@]+)\@(.+)$/);
return match ? { publisher: match[1], extension: match[2], version: match[3] } : null;
})
.filter(Boolean);
} catch (e) {
// 获取失败时抛出异常
throw new Error("无法获取 VSCode 插件列表,请确保已安装 VSCode 并 code 命令可用。");
}
};
这里我用了execSync
创建了一个子进程,并且执行了前面的那个命令。
上面代码的效果如下:

构建下载地址 🔗
上面的步骤已经获取到了插件列表,接下来我们就需要一个网站提供下载链接。

这个open visix
网站收录了vscode
拓展,基本上你用的插件在这上面都是可以找到的,如果实在没找到,一般数量不会很多,这时候去github翻找一下,或者去插件官网找找也是有的。

随便打开一个插件往下找,就找到这个下载地址,点击下载。
下载下来的就是我们需要的vsix
包。

经过一番处理,最终代码如下:
js
const getVsixUrl = ({ publisher, extension, version }) =>
`https://open-vsx.org/api/${publisher}/${extension}/${version}/file/${publisher}.${extension}-${version}.vsix`;
这样就可以获取我们插件的vsix
文件下载地址了。
下载插件 ⬇️
接下来就是下载插件了,这边我用axios
去下载,你要用fetch
也是可以的。
js
const downloadVsix = async (url, dest) => {
const response = await axios({
method: "get",
url,
responseType: "stream", // 以流的方式下载
maxRedirects: 5 // 支持重定向
});
if (response.status !== 200) throw new Error(`下载失败,状态码: ${response.status}`);
const fileStream = fs.createWriteStream(dest);
return new Promise((resolve, reject) => {
response.data.pipe(fileStream);
response.data.on("error", reject);
fileStream.on("finish", resolve);
});
};
如何使用 🚀
拉取代码 🧲
shell
git clone https://github.com/leixq1024/vscode-vsix-download.git

拉取下来之后里面,有几个文件,其中download-vsix.js
就是主要的代码文件了。
安装依赖 📦
arduino
pnpm install
// 或
npm install
// 或
yarn install
运行项目 ▶️
shell
pnpm run start
运行之后,会开始检测你安装的插件。

检测完成之后就会开始按顺序下载。

下载成功之后会显示,成功了多少个,并且在当前目录下会有一个downloaded
文件夹。

这个文件夹里面的就是下载好的vsix
文件。

这样你就可以直接将文件传入离线环境的开发环境,再用插件这边的从vsix安装
功能。

这样就可以把你的插件装进去了。