ftp-deploy で指定のディレクトリを FTP アップロードする

前回紹介した ftp-client がファイル名を指定してアップロードしたのに対し、今回紹介する ftp-deploy は、ディレクトリを指定するだけで配下のサブディレクトリまで再帰的に全てアップロードしてくれる。

コイツも node-ftp のラップだ。

パッケージは以下のようにインストール。

$ npm i -D ftp-deploy

今回も、プロジェクト直下の dist/ ディレクトリ内にアップロード対象のファイルがあり、FTP 接続先は /html-dir/ 配下にファイルを配置するというテイにしてみる。

以下のようなファイル (ftp-deploy.js) を作ったら、$ node ftp-deploy.js で実行できる。

// FTP 接続先情報
const user     = 'user';
const password = 'password';
const host     = 'example.com';

// アップロード中のファイルのログを出力
ftpDeploy.on('uploading', (data) => {
  console.log('Uploading', data);
});
// 1ファイルのアップロードが終わった時にログを出力 (進捗率なども分かる)
ftpDeploy.on('uploaded', (data) => {
  console.log('Uploaded', data);
});
// アップロード中にエラーが発生した場合
ftpDeploy.on('upload-error', (data) => {
  console.log('Upload Error', data);
});
// FTP 接続しデプロイする
ftpDeploy.deploy({
  username  : user,
  password  : password,
  host      : host,
  localRoot : 'dist',       // ローカルのルートとなるディレクトリを指定
  remoteRoot: '/html-dir',  // リモートのルートとなるディレクトリを指定
  include   : [],  // localRoot 以外に追加でアップしたいファイルがあれば指定する
  exclude   : []   // 除外したいファイルがあれば '*.md' などのように指定する
}, (error) => {
  if(error) {
    console.log('Error', error);
    return;
  }
  
  console.log('Deployed');
});

コレで dist/ 内のファイルが全て /html-dir/ にアップできる。