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

Gulpを使用してファイルをSFTPでアップロードする方法を知りたい方に向けて、今回はgulp-sftpプラグインの使用方法を解説します。この記事では、必要なパッケージのインストールからGulpタスクの設定、セキュリティ対策までを詳しく説明します。

必要なパッケージのインストール

まず、Gulpとgulp-sftpをプロジェクトにインストールする必要があります。以下のコマンドを実行してください。

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

Gulpタスクの設定

次に、Gulpファイル(gulpfile.js)を設定します。以下は、特定のファイルをSFTPでリモートサーバーにアップロードする基本的な例です。

const gulp = require('gulp');
const sftp = require('gulp-sftp-up4');

// アップロードタスクの定義
gulp.task('upload', function () {
    return gulp.src('src/**/*') // アップロードするファイルのパス
        .pipe(sftp({
            host: 'your.sftp.server',
            port: 22, // デフォルトのSFTPポートは22
            user: 'username',
            pass: 'password',
            remotePath: '/path/on/server' // リモートサーバー上のパス
        }));
});

// デフォルトタスクの定義(必要に応じて)
gulp.task('default', gulp.series('upload'));

タスクの実行

設定が完了したら、以下のコマンドでタスクを実行します。

gulp upload

または、gulpコマンドを使用してデフォルトタスクを実行することも可能です。

gulp

セキュリティについて

パスワードを直接コードに記載するのはセキュリティ上良くないため、以下の方法を検討してください。

環境変数の使用

const gulp = require('gulp');
const sftp = require('gulp-sftp-up4');

gulp.task('upload', function () {
    return gulp.src('src/**/*')
        .pipe(sftp({
            host: process.env.SFTP_HOST,
            port: process.env.SFTP_PORT || 22,
            user: process.env.SFTP_USER,
            pass: process.env.SFTP_PASS,
            remotePath: process.env.SFTP_REMOTE_PATH
        }));
});

環境変数を設定する例

export SFTP_HOST='your.sftp.server'
export SFTP_USER='username'
export SFTP_PASS='password'
export SFTP_REMOTE_PATH='/path/on/server'

gulp upload

SSHキーの使用

パスワードの代わりにSSHキーを使用する場合は、keyオプションを追加します。

const gulp = require('gulp');
const sftp = require('gulp-sftp-up4');

gulp.task('upload', function () {
    return gulp.src('src/**/*')
        .pipe(sftp({
            host: 'your.sftp.server',
            port: 22,
            user: 'username',
            key: '/path/to/your/private/key', // SSHキーのパス
            remotePath: '/path/on/server'
        }));
});