Socket
Book a DemoInstallSign in
Socket

vsix-downloader

Package Overview
Dependencies
Maintainers
1
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install
Package was removed
Sorry, it seems this package was removed from the registry

vsix-downloader

A CLI tool to download VS Code extensions as VSIX files from the Visual Studio Marketplace

1.5.1
latest
Source
npmnpm
Version published
Weekly downloads
1.5K
Maintainers
1
Weekly downloads
ย 
Created
Source

VSIX Downloader

A modern CLI tool to download VS Code extensions as VSIX files directly from the Visual Studio Marketplace. Supports both single extension downloads and bulk downloads from JSON configuration files.

๐ŸŽฏ What This Tool Solves

The Microsoft-Cursor Extension Block

Recently, Microsoft quietly blocked Cursor (an AI-powered VSCode fork) from accessing the VSCode extension marketplace by adding a simple environment check. This means Cursor users can no longer install extensions directly through the marketplace, seeing "This extension is not available in your environment" errors.

Why You Need This Tool

VSIX Downloader provides a workaround by downloading extensions as .vsix files that can be manually installed in Cursor. This is particularly valuable for:

  • Cursor Users: Bypass Microsoft's marketplace restrictions and continue using your favorite extensions
  • Offline Development: Download extensions once and install them on machines without internet access
  • Version Control: Pin specific extension versions for consistent development environments
  • Bulk Setup: Quickly set up new development environments with all your preferred extensions
  • Backup Strategy: Create local backups of extensions you depend on

Perfect For

  • Developers using Cursor who need to maintain their extension workflow
  • Teams wanting to standardize development environments
  • Offline development scenarios
  • Extension version management and rollbacks

๐Ÿš€ Features

  • Beautiful CLI: Stunning interface powered by Clack
  • Dual Download Modes: Choose between single extension or bulk download from JSON
  • Interactive Prompts: Elegant bordered prompts with validation
  • Bulk Download: Download multiple extensions at once with progress tracking
  • JSON Validation: Comprehensive validation for bulk download files
  • Non-Interactive Bulk Mode: Use --file to run bulk downloads without prompts
  • Sequential Downloads: Clean, readable progress with --retry/--retry-delay options
  • Summary Output: Write machine-readable results with --summary <path>.json
  • Modern Stack: Built with TypeScript, Commander.js, and Clack
  • Error Handling: Comprehensive error handling and validation
  • Progress Indicators: Beautiful spinners and visual feedback
  • Flexible Output: Customizable download directory (defaults to ./downloads in current directory)
  • Custom Filename Templates: Organize downloads with variable substitution ({name}, {version}, {source}, {publisher})
  • Cache Directory Support: Persistent storage with skip/overwrite behavior for efficient re-downloads
  • Smart File Handling: Skip existing files or overwrite with intelligent existence checking
  • Progress Indicators: Real-time download progress with file size, speed, and progress bars
  • Checksum Verification: Generate SHA256 checksums and verify file integrity
  • Smart Parsing: Extracts extension info from Marketplace and OpenVSX URLs
  • Interactive Source Selection: Auto-detects source from URL with ability to switch
  • Mixed-Source Bulk: Use Marketplace and OpenVSX URLs in the same JSON list
  • Source-Aware "latest": Resolve latest for both Marketplace and OpenVSX (single and bulk)
  • Versions Command (Both Sources): List versions from Marketplace or OpenVSX via URL
  • Export Installed Extensions: Export currently installed extensions from VS Code or Cursor in multiple formats
  • Import from Lists: Download extensions from text files, JSON arrays, or VS Code extensions.json
  • Seamless Editor Integration: Export extensions from VS Code or Cursor and import to another environment

๐Ÿ“ฆ Installation

npm install -g vsix-downloader

Local Installation

npm install vsix-downloader

๐Ÿ› ๏ธ Usage

Simply run the command and choose your download mode:

vsix-downloader

You'll be prompted to choose between:

  • ๐Ÿ“ฆ Single Extension: Download one extension interactively
  • ๐Ÿ“š Bulk Download: Download multiple extensions from JSON file

Or use the download command directly:

vsix-downloader download

Single Extension Download

Interactive Mode

Follow the prompts to enter:

  • Extension URL (Marketplace or OpenVSX)
  • Extension version (or type latest)
  • Output directory (optional; press Enter to use ./downloads)

Command Line Arguments

You can also provide arguments directly for single downloads:

# Download with URL and version
vsix-downloader download --url "https://marketplace.visualstudio.com/items?itemName=ms-python.python" --version "2023.20.0"

# Resolve and download the latest version (stable by default)
vsix-downloader download --url "https://marketplace.visualstudio.com/items?itemName=ms-python.python" --version latest

# Prefer pre-release when resolving 'latest'
vsix-downloader download --url "https://marketplace.visualstudio.com/items?itemName=ms-python.python" --version latest --pre-release

# Specify custom output directory
vsix-downloader download --url "..." --version "1.2.3" --output "./my-extensions"

Bulk Download from JSON

For downloading multiple extensions, create a JSON file with the extension details and use bulk mode.

Interactive Bulk Download

  • Select "๐Ÿ“š Bulk Download" from the main menu
  • Enter the path to your JSON file
  • Specify output directory (optional; press Enter to use ./downloads)
  • Watch the progress as each extension downloads

JSON Template

Create a JSON file (e.g., extensions.json) with the following structure (mixed sources allowed):

[
  {
    "url": "https://marketplace.visualstudio.com/items?itemName=ms-python.python",
    "version": "latest"
  },
  { "url": "https://open-vsx.org/extension/ms-python/python", "version": "2025.4.0" },
  {
    "url": "https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode",
    "version": "latest",
    "source": "marketplace"
  }
]

Required Fields

  • url: Extension URL from either Marketplace or OpenVSX
  • version: Specific version to download (or latest)
  • Optional: source โ€” marketplace | open-vsx (overrides auto-detection)

The extension name is automatically extracted from the URL for display purposes in the CLI.

JSON Validation

The CLI performs comprehensive validation on your JSON file before starting downloads:

โœ… File Validation:

  • File exists and is readable
  • Valid JSON format
  • Array structure (must be an array of objects)
  • Non-empty array

โœ… Extension Validation:

  • Required url field (Marketplace or OpenVSX URL)
  • Required version field (non-empty string; latest allowed)
  • URL format validation for both ecosystems

โŒ Error Handling:

  • Clear error messages for invalid JSON structure
  • Specific validation errors for each extension object
  • Failed downloads don't stop the bulk process
  • Detailed summary of successes and failures

Non-Interactive Bulk Mode

Skip prompts and run bulk download straight from a file. Useful for CI and scripts.

# Basic non-interactive bulk download
vsix-downloader download \
  --file ./extensions.json \
  --output ./downloads

# Advanced: sequential downloads with retries, backoff, quiet logs and JSON summary
vsix-downloader download \
  --file ./extensions.json \
  --output ./downloads \
  --retry 3 \
  --retry-delay 1500 \
  --summary ./summary.json \
  --quiet

# Bulk download with custom naming and cache directory
vsix-downloader download \
  --file ./extensions.json \
  --cache-dir ~/.vsix-cache \
  --filename-template "{source}/{publisher}-{name}-v{version}.vsix" \
  --skip-existing

# Bulk download with progress and checksums
vsix-downloader download \
  --file ./extensions.json \
  --checksum \
  --cache-dir ~/.extensions \
  --quiet

# Bulk download with verification against known checksums
vsix-downloader download \
  --file ./extensions.json \
  --verify-checksum "a1b2c3d4e5f6..." \
  --retry 3

Export Installed Extensions

Export your currently installed extensions from VS Code or Cursor to share across environments or backup your setup:

# Interactive export - choose editor, format and output
vsix-downloader export-installed

# Export from specific editor
vsix-downloader export-installed --editor cursor -o my-extensions.txt -f txt
vsix-downloader export-installed --editor vscode -o my-extensions.txt -f txt
vsix-downloader export-installed --editor auto -o my-extensions.txt -f txt

# Export to specific file and format (auto-detects editor)
vsix-downloader export-installed -o my-extensions.json -f json
vsix-downloader export-installed -o my-extensions.txt -f txt
vsix-downloader export-installed -o extensions.json -f extensions.json

# Export workspace extensions.json (if it exists)
vsix-downloader export-installed --workspace

# Machine-readable output (no prompts)
vsix-downloader export-installed --json --editor cursor

Export Formats:

  • json - Detailed extension info with metadata (name, version, publisher, description)
  • txt - Simple list of extension IDs (one per line, supports # comments)
  • extensions.json - VS Code workspace format (recommendations array)

Download from Extension Lists

Download extensions from various list formats:

# Interactive mode - select file and proceed
vsix-downloader from-list

# From text file (extension IDs, one per line)
vsix-downloader from-list --file extensions.txt

# From VS Code extensions.json
vsix-downloader from-list --file .vscode/extensions.json

# With all bulk download options
vsix-downloader from-list \
  --file extensions.txt \
  --output ./downloads \
  --parallel 5 \
  --retry 3 \
  --checksum \
  --quiet

Supported Input Formats:

  • Text files (.txt) - One extension ID per line, # comments supported
  • JSON arrays - Array of extension ID strings
  • VS Code extensions.json - Standard workspace format with recommendations array
  • Auto-detection based on file content

Complete Export โ†’ Import Workflow

  • Export extensions from your current setup:

    # Export your installed extensions
    vsix-downloader export-installed -o my-setup.txt -f txt
    
  • Transfer to new environment and download:

    # Download all extensions from the list
    vsix-downloader from-list --file my-setup.txt --output ./extensions
    
  • Install manually in Cursor/VS Code:

    # Install all downloaded extensions
    cursor --install-extension ./extensions/*.vsix
    

Available Commands

vsix-downloader download [options]           # Download a VSIX file
vsix-downloader versions [options]           # List available versions for an extension
vsix-downloader export-installed [options]   # Export currently installed extensions
vsix-downloader from-list [options]          # Download extensions from a list file
vsix-downloader --help                      # Show help
vsix-downloader --version                   # Show version

Options

Download Command Options

  • -u, --url <url> - Marketplace URL of the extension
  • -v, --version <version> - Version of the extension to download (or latest)
  • --pre-release - Prefer pre-release when resolving latest
  • --source <source> - Source registry: marketplace | open-vsx | auto (default: marketplace)
    • In interactive mode, the source defaults from the URL but you can change it
  • -o, --output <path> - Output directory (default: ./downloads)
  • -f, --file <path> - Bulk JSON file path (non-interactive)
  • --parallel <n> - Number of parallel downloads in bulk mode (default: 4)
  • --retry <n> - Retry attempts per item in bulk mode (default: 2)
  • --retry-delay <ms> - Base delay between retries in ms (exponential backoff)
  • --skip-existing - Skip downloads if target file already exists
  • --overwrite - Overwrite existing files
  • --filename-template <template> - Custom filename template (default: {name}-{version}.vsix)
  • --cache-dir <path> - Cache directory for downloads (overrides output)
  • --checksum - Generate SHA256 checksum for downloaded files
  • --verify-checksum <hash> - Verify downloaded file against provided SHA256 hash
  • --quiet - Reduce output (suppress interactive notes/spinners)
  • --json - Machine-readable logs (reserved for future)
  • --summary <path> - Write bulk summary JSON to the given path

Export-Installed Command Options

  • -o, --output <path> - Output file path
  • -f, --format <format> - Output format: json | txt | extensions.json
  • -e, --editor <editor> - Editor to export from: vscode | cursor | auto (default: auto)
  • -w, --workspace - Export workspace extensions.json instead of globally installed extensions
  • --json - Machine-readable output (no interactive prompts)

From-List Command Options

  • -f, --file <path> - Path to extensions list file
  • -o, --output <path> - Output directory (default: ./downloads)
  • --format <format> - Input file format: json | txt | extensions.json | auto
  • All bulk download options from the download command (parallel, retry, checksum, etc.)

Global Options

  • -h, --help - Display help information
  • -V, --version - Display version number

Versions Command

List all available versions for an extension (Marketplace or OpenVSX). Useful when picking a pinned version or checking pre-releases.

# Prompt for URL, display human-readable list
vsix-downloader versions

# Provide URL and output JSON (works with Marketplace or OpenVSX URLs)
vsix-downloader versions --url "https://marketplace.visualstudio.com/items?itemName=ms-python.python" --json
vsix-downloader versions --url "https://open-vsx.org/extension/ms-python/python" --json

OpenVSX Support

You can download from OpenVSX by specifying the source or by pasting an OpenVSX URL in interactive mode (the source will be preselected as OpenVSX, but you can switch). Bulk supports mixed sources in the same list.

# Single extension from OpenVSX
vsix-downloader download \
  --url "https://open-vsx.org/extension/ms-python/python" \
  --version latest \
  --source open-vsx

# Bulk with OpenVSX
vsix-downloader download \
  --file ./extensions.json \
  --output ./downloads \
  --source open-vsx

Note: auto source is reserved for future fallback behavior. Currently, set --source explicitly to marketplace or open-vsx.

Custom Filename Templates

Customize how downloaded files are named using the --filename-template option with variable substitution:

# Use a custom filename template
vsix-downloader download \
  --url "https://marketplace.visualstudio.com/items?itemName=ms-python.python" \
  --version "2023.20.0" \
  --filename-template "{publisher}_{name}_v{version}.vsix"
# Results in: ms-python_ms-python.python_v2023.20.0.vsix

# Include source in filename
vsix-downloader download \
  --url "..." \
  --version "1.2.3" \
  --filename-template "{source}-{name}-{version}.vsix"
# Results in: marketplace-publisher.extension-1.2.3.vsix

# Bulk download with custom template
vsix-downloader download \
  --file ./extensions.json \
  --filename-template "{publisher}/{name}-{version}.vsix"

Available Template Variables

  • {name} - Full extension identifier (e.g., ms-python.python)
  • {version} - Version number (e.g., 2023.20.0)
  • {source} - Source registry (marketplace or open-vsx)
  • {publisher} - Publisher name (e.g., ms-python)
  • {displayName} - Display name when available

Template Requirements

  • Templates must include at least {name} or {version}
  • Invalid filesystem characters are automatically sanitized
  • .vsix extension is automatically added if missing
  • Default template: {name}-{version}.vsix

Cache Directory

Use a dedicated cache directory for downloads that persists across sessions:

# Use cache directory (overrides --output)
vsix-downloader download \
  --url "..." \
  --version "1.2.3" \
  --cache-dir ~/.vsix-cache

# Skip existing files in cache
vsix-downloader download \
  --file ./extensions.json \
  --cache-dir ~/.vsix-cache \
  --skip-existing

# Bulk download to cache with custom naming
vsix-downloader download \
  --file ./extensions.json \
  --cache-dir ~/.vsix-cache \
  --filename-template "{source}/{publisher}/{name}-{version}.vsix" \
  --overwrite

Cache Directory Benefits:

  • Persistent storage across download sessions
  • Organized extension storage with custom templates
  • Efficient re-downloads with --skip-existing
  • Overrides --output when both are specified

Progress Indicators & Checksums

Monitor download progress and verify file integrity:

# Generate checksum after download
vsix-downloader download \
  --url "https://marketplace.visualstudio.com/items?itemName=ms-python.python" \
  --version "2023.20.0" \
  --checksum

# Verify downloaded file against known checksum
vsix-downloader download \
  --url "..." \
  --version "1.2.3" \
  --verify-checksum "a1b2c3d4e5f6...your-sha256-hash-here"

# Bulk download with progress and checksums
vsix-downloader download \
  --file ./extensions.json \
  --checksum \
  --cache-dir ~/.extensions

Progress Features:

  • Single downloads: Real-time progress bars with percentage completion and file size
  • Bulk downloads: Sequential progress with visual progress bars and file sizes per file
  • Time remaining estimates for single downloads
  • Non-intrusive updates (100ms intervals)

Checksum Features:

  • SHA256 hash generation for integrity verification (both single and bulk)
  • File verification against provided checksums (both single and bulk)
  • Visual indicators: โœ… PASSED, โŒ FAILED, โš ๏ธ WARNING
  • Graceful error handling for checksum failures
  • Short hash display in bulk mode for readability
  • Full hash display in single mode
  • Bulk verification stops on failed checksums to prevent corrupted files

๐Ÿ“‹ Examples

Example 1: Single Extension (Command Line)

vsix-downloader download --url "https://marketplace.visualstudio.com/items?itemName=ms-python.python" --version "2023.20.0"

Example 2: Export โ†’ Import Workflow (Cursor to new environment)

# Step 1: Export your current Cursor extensions
$ vsix-downloader export-installed --editor cursor -o my-cursor-extensions.txt -f txt

# Step 2: Review the exported list
$ cat my-cursor-extensions.txt
# ms-python.python
# eamodio.gitlens
# PKief.material-icon-theme
# Continue.continue
# Prisma.prisma

# Step 3: Download all extensions on new machine
$ vsix-downloader from-list --file my-cursor-extensions.txt --output ./downloads

# Step 4: Install in Cursor
$ cursor --install-extension ./downloads/*.vsix

Example 3: Cross-Editor Migration (VS Code โ†’ Cursor)

# Step 1: Export your VS Code extensions
$ vsix-downloader export-installed --editor vscode -o vscode-extensions.txt -f txt

# Step 2: Download extensions for Cursor installation
$ vsix-downloader from-list --file vscode-extensions.txt --output ./cursor-migration

# Step 3: Install in Cursor
$ cursor --install-extension ./cursor-migration/*.vsix

# Step 4: Verify Cursor now has the extensions
$ vsix-downloader export-installed --editor cursor --json | grep -c '"id"'

Example 4: VS Code Workspace Integration

# Export to VS Code workspace format
$ vsix-downloader export-installed -o .vscode/extensions.json -f extensions.json

# Contents of .vscode/extensions.json:
{
  "recommendations": [
    "ms-python.python",
    "eamodio.gitlens",
    "PKief.material-icon-theme"
  ]
}

# Download from workspace extensions.json
$ vsix-downloader from-list --file .vscode/extensions.json --output ./team-extensions

Example 5: Single Extension (Interactive)

$ vsix-downloader

โ”Œ  ๐Ÿ”ฝ VSIX Downloader
โ”‚
โ—‡  Choose download mode:
โ”‚  ๐Ÿ“ฆ Single Extension
โ”‚
โ—‡  Enter the VS Code extension marketplace URL:
โ”‚  https://marketplace.visualstudio.com/items?itemName=ms-python.python
โ”‚
โ—‡  Extension info extracted
โ”‚
โ—‡  Extension โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚                                  โ”‚
โ”‚  ms-python - python              โ”‚
โ”‚                                  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ”‚
โ—‡  Enter the extension version (or use the version number):
โ”‚  latest
โ”‚
โ—‡  Enter output directory:
โ”‚  ./downloads
โ”‚
โ—‡  Download Details โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚                                                     โ”‚
โ”‚  Filename: ms-python.python-2023.20.0.vsix          โ”‚
โ”‚  Output: ./downloads                                โ”‚
โ”‚  Resolved Version: 2023.20.0                       โ”‚
โ”‚  Template: {name}-{version}.vsix                    โ”‚
โ”‚  URL: https://ms-python.gallery.vs...SIXPackage     โ”‚
โ”‚                                                     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ”‚
โ—‡  Download ms-python.python-2023.20.0.vsix?
โ”‚  Yes
โ”‚
โ—‡  Downloaded successfully!
โ”‚
โ—‡  Download Complete โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚                                                               โ”‚
โ”‚  File: ms-python.python-2023.20.0.vsix                        โ”‚
โ”‚  Location: downloads/ms-python.python-2023.20.0.vsix          โ”‚
โ”‚  Size: 15420 KB                                              โ”‚
โ”‚  SHA256: a1b2c3d4e5f6789...                                  โ”‚
โ”‚                                                               โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ”‚
โ””  ๐ŸŽ‰ Successfully downloaded VSIX extension!

Example 6: Bulk Download

$ vsix-downloader

โ”Œ  ๐Ÿ”ฝ VSIX Downloader
โ”‚
โ—‡  Choose download mode:
โ”‚  ๐Ÿ“š Bulk Download
โ”‚
โ—‡  Enter the path to your JSON file:
โ”‚  ./extensions.json
โ”‚
โ—‡  Enter output directory:
โ”‚  ./downloads
โ”‚
โ—  ๐Ÿ” Reading and validating JSON file...
โ”‚
โ—†  โœ… JSON validation passed! Found 3 extension(s) to download.
โ”‚
โ—  [1/3] ms-python.python - [โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘โ–‘] 45.2% 15.0 MB/38.4 MB
โ”‚
โ—  [1/3] โœ… ms-python.python (38.4 MB) - SHA256: a1b2c3d4... โœ…
โ”‚
โ—  [2/3] esbenp.prettier-vscode - [โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘] 78.9% 218 KB/276 KB
โ”‚
โ—  [2/3] โœ… esbenp.prettier-vscode (276 KB) - SHA256: e5f6g7h8... โœ…
โ”‚
โ—  [3/3] PKief.material-icon... - [โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘] 92.1% 738 KB/801 KB
โ”‚
โ—  [3/3] โœ… PKief.material-icon-theme (801 KB) - SHA256: i9j0k1l2... โœ…
โ”‚
โ—  Bulk download completed! 3 successful, 0 failed.
โ”‚
โ—‡  Download Complete โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚                                     โ”‚
โ”‚  Total: 3 extensions                โ”‚
โ”‚  Successful: 3                      โ”‚
โ”‚  Failed: 0                          โ”‚
โ”‚  Output: ./downloads                โ”‚
โ”‚                                     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
โ”‚
โ””  ๐ŸŽ‰ Bulk download completed! 3 extension(s) downloaded successfully.

๐Ÿงฉ Manual Installation Methods

1. Command Line (.vsix)

  • Use the .vsix you downloaded with this tool (default in ./downloads/).
  • Open your terminal and navigate to the directory with the .vsix file.
  • Run:
cursor --install-extension your-extension.vsix
  • Restart Cursor IDE to activate the extension.

2. Drag and Drop

  • Open Cursorโ€™s Extensions panel (Ctrl+Shift+X).
  • Drag the .vsix file from your file explorer into the Extensions panel.
  • The extension will install automatically.

3. Command Palette

  • Open the Command Palette with Ctrl+Shift+P.
  • Type and select โ€œExtensions: Install from VSIXโ€ฆโ€.
  • Select your .vsix file and confirm.

Additional Tips

  • Some extensions may have compatibility or license limitations due to Cursorโ€™s fork status, especially for Microsoft (official) extensions.
  • If you have multiple profiles, you can append --profile "<profile_name>" to the install command.

๐Ÿ’ก Tips & Best Practices

Extension Management Workflow

  • Export-Import Workflow: The most efficient way to migrate extensions between environments:

    # On source machine: export current extensions (auto-detects editor)
    vsix-downloader export-installed -o dev-setup.txt -f txt
    
    # Or export from specific editor
    vsix-downloader export-installed --editor cursor -o cursor-setup.txt -f txt
    vsix-downloader export-installed --editor vscode -o vscode-setup.txt -f txt
    
    # On target machine: download all extensions
    vsix-downloader from-list --file dev-setup.txt --cache-dir ~/.extensions
    
    # Install all at once (Cursor or VS Code)
    cursor --install-extension ~/.extensions/*.vsix
    code --install-extension ~/.extensions/*.vsix
    
  • Team Extension Standardization: Use workspace extensions.json for team consistency:

    # Create team extension recommendations
    vsix-downloader export-installed -o .vscode/extensions.json -f extensions.json
    
    # Team members can download recommended extensions
    vsix-downloader from-list --file .vscode/extensions.json
    
  • Multiple Environment Support: Maintain different extension sets for different purposes:

    # Export different setups from specific editors
    vsix-downloader export-installed --editor cursor -o frontend-setup.txt -f txt
    vsix-downloader export-installed --editor vscode -o backend-setup.txt -f txt
    vsix-downloader export-installed --editor auto -o datascience-setup.txt -f txt
    
    # Quick setup on new machines
    vsix-downloader from-list --file frontend-setup.txt --parallel 5
    
  • Editor Auto-Detection: The tool intelligently detects available editors:

    # Auto mode prefers Cursor if both editors have extensions
    vsix-downloader export-installed --editor auto
    
    # Explicit editor selection when you need specific one
    vsix-downloader export-installed --editor cursor  # Force Cursor
    vsix-downloader export-installed --editor vscode  # Force VS Code
    

Bulk Download Tips

  • Create Extension Lists: Save commonly used extension combinations in files:

    # Frontend development stack
    ./frontend-extensions.json
    
    # Backend development stack
    ./backend-extensions.json
    
    # Data science toolkit
    ./datascience-extensions.json
    
  • Version Pinning: Always specify exact versions in your JSON for reproducible setups.

  • Error Recovery: The CLI continues downloading even if one extension fails, so you can retry just the failed ones.

  • Large Batches: For downloading many extensions, the progress tracking helps you monitor the process.

  • Organized Storage: Use filename templates and cache directories for better organization:

    # Organize by source and publisher
    --cache-dir ~/.extensions \
    --filename-template "{source}/{publisher}/{name}-{version}.vsix"
    
    # Version-focused naming
    --filename-template "{name}_v{version}_{source}.vsix"
    
  • Efficient Re-downloads: Use --skip-existing with cache directories to avoid re-downloading:

    # Only download new or updated extensions
    vsix-downloader download \
      --file ./extensions.json \
      --cache-dir ~/.extensions \
      --skip-existing
    
  • Integrity Verification: Generate and verify checksums for downloaded files:

    # Generate checksums for verification
    vsix-downloader download \
      --file ./extensions.json \
      --checksum \
      --summary ./results.json
    
    # Verify single extension against known hash
    vsix-downloader download \
      --url "..." \
      --version "1.2.3" \
      --verify-checksum "a1b2c3d4e5f6..."
    
    # Verify all files in bulk download against same hash
    vsix-downloader download \
      --file ./extensions.json \
      --verify-checksum "a1b2c3d4e5f6..." \
      --parallel 4
    

Finding Extension URLs and Versions

  • Browse Extensions: Go to Visual Studio Marketplace
  • Copy URL: From the extension page, copy the full URL (e.g., https://marketplace.visualstudio.com/items?itemName=ms-python.python)
  • Find Version: Check the "Version History" tab or "More Info" section for version numbers

๐Ÿ”ง Development

Prerequisites

  • Node.js 16+
  • npm or yarn

Setup

  • Clone the repository:
git clone https://github.com/yourusername/vsix-downloader.git
cd vsix-downloader
  • Install dependencies:
npm install
  • Build the project:
npm run build
  • Run in development mode:
npm run dev

Scripts

  • npm run build - Compile TypeScript to JavaScript
  • npm run dev - Run in development mode with ts-node
  • npm start - Run the compiled version
  • npm run prepare - Build before publishing

๐Ÿ“ Project Structure

vsix-downloader/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ commands/
โ”‚   โ”‚   โ”œโ”€โ”€ download.ts          # Main download command logic
โ”‚   โ”‚   โ”œโ”€โ”€ versions.ts          # List extension versions
โ”‚   โ”‚   โ”œโ”€โ”€ exportInstalled.ts   # Export installed extensions
โ”‚   โ”‚   โ””โ”€โ”€ fromList.ts          # Download from extension lists
โ”‚   โ”œโ”€โ”€ utils/
โ”‚   โ”‚   โ”œโ”€โ”€ urlParser.ts         # URL parsing utilities
โ”‚   โ”‚   โ”œโ”€โ”€ downloader.ts        # File download utilities
โ”‚   โ”‚   โ”œโ”€โ”€ fileManager.ts       # File system utilities
โ”‚   โ”‚   โ”œโ”€โ”€ bulkDownloader.ts    # Bulk download functionality
โ”‚   โ”‚   โ”œโ”€โ”€ extensionRegistry.ts # Extension version resolution
โ”‚   โ”‚   โ”œโ”€โ”€ extensionExporter.ts # Export/import functionality
โ”‚   โ”‚   โ”œโ”€โ”€ filenameTemplate.ts  # Custom filename templates
โ”‚   โ”‚   โ”œโ”€โ”€ checksum.ts          # SHA256 checksum utilities
โ”‚   โ”‚   โ””โ”€โ”€ progressTracker.ts   # Progress bar utilities
โ”‚   โ””โ”€โ”€ index.ts                 # CLI entry point
โ”œโ”€โ”€ dist/                        # Compiled JavaScript (generated)
โ”œโ”€โ”€ package.json
โ”œโ”€โ”€ tsconfig.json
โ””โ”€โ”€ README.md

๐Ÿ” How It Works

Core Download Process

  • URL Parsing: Extracts publisher.extension from Marketplace or OpenVSX URLs
  • Extension Info: Splits the itemName into publisher and extension name
  • Download URL Construction: Builds the VSIX download URL using the selected source
  • File Download: Downloads the VSIX file using axios with progress tracking
  • File Management: Creates output directory and saves the file with proper naming

Export/Import Process

  • Extension Discovery: Scans editor extensions directory:
    • VS Code: ~/.vscode/extensions/
    • Cursor: ~/.cursor/extensions/
    • Auto-detection prefers Cursor if both exist
  • Metadata Extraction: Reads package.json from each extension directory
  • Format Conversion: Converts to requested format (JSON, text, or extensions.json)
  • List Processing: Parses extension lists and converts IDs to marketplace URLs
  • Bulk Download: Uses existing bulk download infrastructure for efficient processing

URL Patterns

The tool constructs download URLs using these patterns:

# Marketplace
https://[publisher].gallery.vsassets.io/_apis/public/gallery/publisher/[publisher]/extension/[extension]/[version]/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage

# OpenVSX
https://open-vsx.org/api/[publisher]/[extension]/[version]/file/[publisher].[extension]-[version].vsix

โš ๏ธ Error Handling

The tool handles various error scenarios:

  • Invalid URLs: Validates marketplace URL format
  • Missing Versions: Validates version number format
  • Network Errors: Handles timeouts and connection issues
  • File System Errors: Manages directory creation and permissions
  • 404 Errors: Clear messages for non-existent extensions/versions

๐Ÿค Contributing

We welcome contributions! This project uses a protected main branch workflow to ensure code quality and maintain a clean git history.

๐Ÿš€ Quick Start

  • Fork the repository on GitHub
  • Clone your fork locally:
    git clone https://github.com/YOUR_USERNAME/vsix-downloader.git
    cd vsix-downloader
    
  • Create a feature branch:
    git checkout -b feature/your-feature-name
    
  • Make your changes and commit using conventional commits (see below)
  • Push to your fork:
    git push origin feature/your-feature-name
    
  • Create a Pull Request from your fork to the main repository

Conventional Commits

This project uses Conventional Commits for automatic versioning and releases. Please follow this format:

# Format: <type>[optional scope]: <description>

# Examples:
git commit -m "feat: add new download feature"
git commit -m "fix: resolve URL parsing issue"
git commit -m "docs: update README with new examples"
git commit -m "feat!: breaking change in API"
git commit -m "feat(download): add bulk download capability"

Commit Types:

  • feat: New features
  • fix: Bug fixes
  • docs: Documentation changes
  • style: Code style changes (formatting, etc.)
  • refactor: Code refactoring
  • perf: Performance improvements
  • test: Adding or updating tests
  • chore: Build process or tooling changes

Breaking Changes: Add ! after the type for breaking changes (e.g., feat!: breaking change)

๐Ÿš€ Automated Publishing

This project uses GitHub Actions for automated publishing to NPM:

  • Automatic Versioning: Version bumps based on conventional commits
  • NPM Publishing: Automatic publish on merge to main branch
  • GitHub Releases: Automatic release creation with tags
  • Version Sync: GitHub releases and NPM versions stay in sync

Workflow:

  • Make changes and commit with conventional commit format
  • Create Pull Request from feature branch
  • Get review and approval
  • Merge PR to main branch
  • GitHub Actions automatically:
    • Determines version bump (patch/minor/major)
    • Updates package.json version
    • Publishes to NPM
    • Creates GitHub release with tag
    • Pushes version changes back to repository

Note: Since main branch is protected, publishing only occurs after PR approval and merge, ensuring all changes are reviewed.

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

๐Ÿ“ž Support

If you encounter any issues or have questions:

  • Check the Issues page
  • Create a new issue with detailed description
  • Include the marketplace URL and version you're trying to download
Built with Cursor This package is Built with Cursor for Cursor

Keywords

vscode

FAQs

Package last updated on 29 Aug 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with โšก๏ธ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.