コンテンツにスキップ

Visual Studio Code の拡張機能ファイル(.vsix)をダウンロードする

以下のスクリプトdownload-extensionsを実行して、インストール済みの拡張機能をダウンロードします。

download-extensions
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
SCRIPT_DESCRIPTION="Downloads installed Visual Studio Code extensions in VSIX format."
# shellcheck disable=SC2034 # Unused variable.
readonly SCRIPT_DESCRIPTION
API_URL="https://marketplace.visualstudio.com/_apis/public/gallery/publishers"
DRY_RUN=false
if [ $# -gt 0 ]; then
OUTPUT_DIR="$1"
mkdir -p "$OUTPUT_DIR"
else
DRY_RUN=true
fi
EXTENSION_LIST=$(code --list-extensions --show-versions | grep '@')
while IFS='@' read -r EXTENSION VERSION; do
IFS='.' read -ra ADDR <<<"$EXTENSION"
PUBLISHER="${ADDR[0]}"
EXTENSION_NAME="${ADDR[1]}"
DOWNLOAD_URL="${API_URL}/${PUBLISHER}/vsextensions/${EXTENSION_NAME}/${VERSION}/vspackage"
if [ "$DRY_RUN" = true ]; then
echo "Download url: $DOWNLOAD_URL"
else
if [ -f "$OUTPUT_DIR/$EXTENSION_NAME-$VERSION.vsix" ]; then
echo "$EXTENSION_NAME-$VERSION.vsix already exists"
continue
fi
wget -O "$OUTPUT_DIR/$EXTENSION_NAME-$VERSION.vsix" "$DOWNLOAD_URL"
echo "Downloaded $EXTENSION_NAME-$VERSION.vsix"
fi
done < <(echo "$EXTENSION_LIST")
Terminal window
chmod u+x ./download-extensions
./download-extensions # ダウンロードURLを標準出力するだけ
./download-extensions out # outディレクトリに拡張機能をダウンロード
詳細

現在、ダウンロード URL は以下のように構成されています。

Terminal window
DOWNLOAD_URL="${API_URL}/${PUBLISHER}/vsextensions/${EXTENSION_NAME}/${VERSION}/vspackage"

例えばGitHub Copilot https://marketplace.visualstudio.com/items?itemName=GitHub.copilotであれば、https://marketplace.visualstudio.com/_apis/public/gallery/publishers/GitHub/vsextensions/copilot/1.223.1070/vspackageがダウンロード URL です。