Visual Studio Code

VSCSFTP

SFTP拡張機能の概要

拡張機能のSFTPを使って、Visual Studio Code(以下VSC)で保存したファイルを自動的にサーバにアップロードする方法を説明します。拡張機能のインストール方法は下記ページを参考にしてください。

拡張機能・マーケットプレイス

SFTP拡張機能はマーケットプレイスの検索ボックスで「SFTP」で検索するか、以下のサイトからダウンロードしてインストールしてください。

VSCマーケットプレイス:SFTP拡張機能

SFTP接続の設定例

インストールしたら、SFTPの接続設定を行います。Windows/Linux では[Ctrl]+[Shift]+[P]、Mac では[Cmd]+[Shift]+[P]でコマンドパレットを開き、SFTP: config コマンドを実行します。

SFTP: configを実行すると、sftp.jsonファイルが開かれます。このファイルにファイルを同期したいSFTPの設定をおこなっていきます。このファイルはプロジェクトルートの.vscodeディレクトリに作成されます。

簡単な設定例は次のようになります。

※JSONファイルはコメント構文が使えませんが、説明のために一部コメントを使っています。コピーして使う際はコメントを削除してください。

  1. {
  2. // 任意の設定名
  3. "name": "exampleサーバ",
  4. // リモートサーバのホスト名
  5. "host": "example.com",
  6. // 接続プロトコル
  7. "protocol": "sftp",
  8. // 接続ポート番号
  9. "port": 22,
  10. // リモートサーバのユーザ名
  11. "username": "username",
  12. // リモートのアップロードディレクトリのパス
  13. "remotePath": "/var/www/htdocs/",
  14. // リモートログイン用の秘密鍵のパス
  15. "privateKeyPath": "/Users/user/Documents/ssh/id_rsa.ppk",
  16. // 保存時に自動的にアップロードする
  17. "uploadOnSave": true
  18. }

その他、様々な設定項目があるので、以下で紹介します。

  1. {
  2. "name": "任意の設定名",
  3. "protocol": "sftp",
  4. "host": "リモートサーバのホスト名",
  5. "port": 22,
  6. "context": "ローカルのアップロード対象 例:dist",
  7. "username": "リモートサーバのユーザ名",
  8. "privateKeyPath": "リモートログイン用の秘密鍵のパス 例:/Users/foo/.ssh/id_rsa",
  9. "remotePath": "リモートのアップロードディレクトリのパス 例:/home/www/example.jp",
  10. // ※WindowsのC:\といったドライブ表記は/に置換する
  11. "ignore": [
  12. // アップロードから除外するファイル
  13. ".vscode",
  14. ".git",
  15. ".DS_Store"
  16. ],
  17. "sshConfigPath": "ssh設定のパス 例:/Users/foo/.ssh/config",
  18. // 同期オプション
  19. "syncOption": {
  20. // 削除を同期する
  21. "delete": true,
  22. // 新規作成ファイルをスキップする
  23. "skipCreate": false,
  24. // 既存ファイルの更新を除外する
  25. "ignoreExisting": false,
  26. // ローカル側が新しい場合のみ更新する
  27. "update": false
  28. },
  29. // 保存時にアップロードする
  30. "uploadOnSave": true,
  31. // 監視するファイル
  32. "watcher": {
  33. // VSC以外からファイル変更を監視する対象
  34. "files": "*.{js,css}",
  35. // VSC以外から変更された場合にリモートを自動で更新する
  36. "autoUpload": true,
  37. // VSC以外から削除された場合にリモートを自動で削除する
  38. "autoDelete": true
  39. }
  40. }

1つのプロジェクトに複数の接続先を設定することができます。

複数の接続先
  1. [
  2. {
  3. "name": "サーバA",
  4. "context": "project/build",
  5. "host": "example.com",
  6. "username": "username",
  7. "password": "password",
  8. "remotePath": "/remote/project/build"
  9. },
  10. {
  11. "name": "サーバB",
  12. "host": "example.jp",
  13. "protocol": "sftp",
  14. "port": 22,
  15. "username": "username",
  16. "privateKeyPath": "/Users/user/Documents/ssh/id_rsa.ppk",
  17. }
  18. ]

uploadOnSave設定がtrueになっていれば、ファイルを保存すれば自動的にアップロードされます。手動でアップロードする際は、アップロードしたいファイル上で右クリックし、メニューから[Upload]を選択します。右クリックメニューはツリーパネル、エディタパネルのどちらでも使えます。

コマンドパレットからでも実行できます。Windows/Linux では[Ctrl]+[Shift]+[P]、Mac では[Cmd]+[Shift]+[P]でコマンドパレットを開き、SFTP: Upload コマンドを実行します。Uploadにはいくつか種類があり、用途に合わせて選んでください。

ツリービューからディレクトリをアップロードすることもできます。

ローカルとリモートのファイルを比較

ローカルフィアルとリモートファイルを比較することもできます。任意のファイルを右クリックして、ポップアップメニューから[Diff with Remote]を選択してください。ローカルとサーバのファイルを比較して差異を表示します。

ローカルとリモートの同期

ファイルやディレクトリ単位でのアップではなく、ローカルとリモートを同期することもできます。

  • SFTP: Sync Both Directions
    リモートとローカル双方向で同期
  • SFTP: Sync Local -> Remote
    ローカルからリモートに同期
  • SFTP: Sync Remote -> Local
    リモートからローカルに同期

問題点

SFTP拡張機能のGithubリポジトリにQ&Aがあるので、そちらを参考にしてください。

GithubリポジトリのQ&A

\ 30日間のお試し期間あり/

無料でKindle Unlimitedを試してみる

※Amazonアカウントですぐに登録可能。いつでも解約できます

関連記事