GulpでファイルをSFTPアップロードする方法 (gulp-sftp)

投稿者 : OSCA

[PR] "出川哲朗の充電させてもらえませんか?"で登場したロケ地を紹介するファンサイト「あの場所へ行こう!」はこちら。

 本項では Gulp から SFTP を利用してサーバーにファイルをアップロード、デプロイする方法について解説します。Gulp のタスクの中で SFTP を利用するには、gulp-sftp モジュールが便利です。 本稿では、この gulp-sftp を利用した方法を紹介します。

導入・インストール

 まずはモジュールの導入です。 次のように gulp と gulp-sftp をインストールします。

$ npm install --save-dev gulp
$ npm install --save-dev gulp-sftp

利用方法

 それではさっそく利用して見ましょう。 gulpfile.js で gulp-sftp を読み込み、タスクの .pipe() メソッドの引数で SFTP の接続先サーバー情報と共に呼び出すだけと、とても簡単に利用できます。

var gulp = require('gulp');
var sftp = require('gulp-sftp');

// SFTPの接続先情報をオブジェクト型で宣言します
var options = {
    host: 'www.mycompany.co.jp',
    port: 22,
    user: 'account',
    pass: '12345678'
};

gulp.task('default', function () {
    return gulp.src('src/*')
        .pipe(sftp(options));
});

SFTPオプション

 SFTP の接続情報はオブジェクトとして指定します。 上記では「ホスト」「ポート」「ユーザ」「パスワード」を指定していますが、次のような情報をオプションとして指定できます。

変数名項目デフォルト値備考
host (必須)ホスト名String
portポート番号Number22
user (必須)ユーザー名String‘anonymous’
passパスワードStringnull
remotePathリモートパスString‘/’
remotePlatformリモートパスString‘unix’Windowsサーバの場合は ‘windows’ を指定
key秘密鍵String or Objectnull
passphraseパスフレーズStringnull

SSH鍵交換方式での接続

 SFTPでSSH鍵交換方式で接続する場合は、次のようにパスワードをオプションオブジェクトを指定すれば ~/.ssh/id_rsa を利用して接続してくれます。

var options = {
    host: 'www.mycompany.co.jp',
    port: 22,
    user: 'account’
}

 秘密鍵を利用して接続した場合、Gulp のタスクを実行した際のログには、以下のような行が表示されます。

[11:31:55] Authenticating with private key.

おわりに

 本項では Gulp から SFTP を利用してサーバーにファイルをアップロード、デプロイする方法について解説しました。 開発の自動化にぜひ役立ててください。

Gulp入門に戻る

Gulpのトップへ戻る

著者 : OSCA

OSCA

Java, PHP 系のWEBエンジニア。 WEBエンジニア向けコミュニティ「WEBエンジニア勉強会」を主催。 個人として何か一つでも世の中の多くの人に使ってもらえるものを作ろうと日々奮闘中。
@engineer_osca