https://github.com/breca/vsixdler
Download VS Code extensions from the marketplace and bundle them into a single release archive
https://github.com/breca/vsixdler
Last synced: 3 days ago
JSON representation
Download VS Code extensions from the marketplace and bundle them into a single release archive
- Host: GitHub
- URL: https://github.com/breca/vsixdler
- Owner: breca
- Created: 2026-02-16T05:24:09.000Z (23 days ago)
- Default Branch: main
- Last Pushed: 2026-03-01T05:19:20.000Z (10 days ago)
- Last Synced: 2026-03-01T08:25:32.426Z (10 days ago)
- Language: Go
- Size: 12.7 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# vsixdler
Download VS Code extensions from the marketplace and bundle them into a single release archive. Useful for offline installation, archival, and distribution.
**TL;DR:** Fork this repo, create a branch, edit `extensions.yaml` with the extensions you want, and push. Every push that changes `extensions.yaml` automatically downloads your extensions and publishes them as a GitHub release. A weekly sync also runs on Sundays, or you can trigger it manually from the Actions tab.
## Setup
**Requirements:** Go 1.21+
```sh
git clone https://github.com/breca/vsixdler.git
cd vsixdler
go build -o vsixdler .
```
## Configuration
Create an `extensions.yaml` in the project root:
```yaml
extensions:
- id: "ms-python.python" # latest, universal
- id: "golang.go"
version: "0.42.1" # pinned version
- id: "ms-vscode.cpptools"
platforms: [linux-x64, darwin-arm64] # platform-specific
```
**Supported platforms:** `win32-x64`, `win32-arm64`, `linux-x64`, `linux-arm64`, `linux-armhf`, `alpine-x64`, `alpine-arm64`, `darwin-x64`, `darwin-arm64`, `web`
## Usage
```sh
# Preview what would be downloaded
./vsixdler download --dry-run
# Download to ./vsix/
./vsixdler download
# Custom output directory and config
./vsixdler download -c my-extensions.yaml -o ./output
# Parallel downloads (default: 4)
./vsixdler download -j 8
# Verbose logging
./vsixdler download -v
```
Downloaded files follow the naming convention:
```
ms-python.python-2024.17.vsix # universal
ms-vscode.cpptools-1.22.5@linux-x64.vsix # platform-specific
```
## GitHub Actions
The included workflow (`.github/workflows/sync-extensions.yaml`) runs weekly on Sundays at 04:00 UTC and can be triggered manually. It downloads all extensions and uploads them as GitHub release assets.
Each branch runs independently with its own `extensions.yaml`, so multiple users can maintain separate extension lists on different branches. Releases are tagged `{branch}/sync-{date}-{run}` to avoid collisions.
To use it, push your branch with an `extensions.yaml` and either wait for the schedule or trigger the workflow manually from the Actions tab.