本項では 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 | ポート番号 | Number | 22 | |
user (必須) | ユーザー名 | String | ‘anonymous’ | |
pass | パスワード | String | null | |
remotePath | リモートパス | String | ‘/’ | |
remotePlatform | リモートパス | String | ‘unix’ | Windowsサーバの場合は ‘windows’ を指定 |
key | 秘密鍵 | String or Object | null | |
passphrase | パスフレーズ | String | null |
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 を利用してサーバーにファイルをアップロード、デプロイする方法について解説しました。 開発の自動化にぜひ役立ててください。