gulpでSFTPでファイルをサーバにアップロードする

gitが使用できないサーバの時はgulpからSFTPでファイルをアップロードできるようにするととても便利です。
gulp version4 では gulp-sftp がうまく動作しないので gulp-sftp-up4 を使用します。

● gulpでSFTPファイルアップロードする gulp-sftp-up4

gulp-sftp-up4のインストール

npm install --save-dev gulp-sftp-up4

gulp-sftpのGulp設定(gulpfile.js に記述)

var my_json = load_json(__dirname + '/gulp_ftp.json');
console.log( my_json );

gulp.task('sftp', function () {
    return gulp.src( my_json.file_options )
        .pipe(sftp( my_json.ftp_options ));
});

sftpの設定ファイル( gulp_ftp.json )

{
    "file_options" : [
        "www/**", 
        "!www/test/**", 
        "!www/**/___*"
    ] ,
    "ftp_options" : {
      "host"      : "xxx.yyy.com",
      "port"      : 22,
      "user"      : "hogehoge",
      "pass"      : "fugafuga",
      "remotePath": "/var/www/mysite/htdocs/"
    }
}

アップロードするファイルのルールは
ローカルの(./www)以下の全てのファイルを、サーバ上の(/var/www/mysite/htdocs/)へアップロードする
ローカルの( ./www/test/)フォルダ以下はアップロードしない
ローカルの先頭アンダーバー3つで始まるファイル( 例:___myfile.html )はアップロードしない
です。

remotePath は 必ずスラッシュ(/)で始まる絶対パスで表記すること。 絶対パスでないとディレクトリ作成時に下記エラー

SFTP error or directory exists:

が出ます。

関連エントリー

No.1046
01/08 16:38

edit

gulp