botchy hack note

TypeScript、Ruby、Golang とか Macとかの備忘録です.間違いがあるとご指摘くださると嬉しいです.

VS Code の拡張機能がプロキシでインストールできないときの対処法

f:id:bokken31:20170613233337p:plain

こんにちは bokken (@_bokken) です。

今回は、プロキシに阻まれて VS Code の拡張機能がインストールできない問題への一時的な対処法をご紹介したと思います。

前提

  • WindowsMacLinux いずれの OS でも OK
  • VS Code の http.proxy 設定が効かない
  • プロキシの設定が済んでいる (Mac だと環境変数の http_proxy=“http://{user}:{pass}@proxy.server.com:8080”)
    • VS Code の http.proxy ではなく、環境変数などの設定

背景

VS Code の拡張機能をインストールする際やアップデートする時に http.proxy の設定を読んでくれないようです。

本問題については GitHub 上にある VS Code リポジトリに幾多の Issus が建てられて議論がされています。

しかし、2017年6月13日現在、未だ原因の究明に至っていません。

解決策

現状ある解決策としては VS Code の拡張機能をシェルやコマンドプロンプトからインストール/アップデートする方法があります。

CLI の操作においてはプロキシの設定が有効になるようで、上手くインストールできます。

インストールコマンド

インストールのための具体的なコマンドは下記です。

code --install-extension <author>.<extension>`

ここで、<author>.<extension> は、下記画像のように VS Code の拡張機能のページや拡張機能の Web ページの URL から参照することができます。

f:id:bokken31:20170613232703p:plain

アップデート

一方で、アップデートをしたい場合のオプションは提供されておらず、 単純にインストールしようとすると、すでに拡張機能がインストールされているというエラーが出ます。

そのため、アップデートの場合は下記のように一度当該の拡張機能をアンインストールしてから、インストールする必要があります。

code --unsintall-extension <author>.<extension>
code --install-extension <author>.<extension>

以上で、拡張機能のインストールは成功します。

まとめてアップデート

シェルなのでコマンドを使えば、まとめてアップデートすることもできます。

下記は MacLinux 環境で使える Ruby スクリプトです。

#! /usr/bin/env ruby

lists = `code --list-extensions`
lists.each_line do |extension|
  extension.chomp!
  puts "update #{extension}"
  puts `code --uninstall-extension #{extension}`
  puts `code --install-extension #{extension}`
end

こちらを update-vs-code-extensions という名前で保存して chmod a+x update-vs-code-extensions を実行して、パスが通っているところに保存します。 (例えば、/usr/local/bin)

そうすると、ターミナルから update-vs-code-extensions と実行すると、すべての拡張機能を順番に更新してくれます。

まとめ

社内で使えないと思っていたみなさんの助けになれれば幸いです。

良かったら TypeScript や VS Code, AWS 関連のつぶやきをしているので @_bokken をフォローしてみてください。

それではより良い VS Code ライフを!