Corredor

ウェブ、プログラミングの勉強メモ。

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

いちばんやさしいJavaScriptの教本 人気講師が教えるWebプログラミング入門(「いちばんやさしい教本」シリーズ)

いちばんやさしいJavaScriptの教本 人気講師が教えるWebプログラミング入門(「いちばんやさしい教本」シリーズ)

前回紹介した 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/ にアップできる。

実際に自分のサイトを管理しているプロジェクトでも利用しているので、以下の GitHub リポジトリをご参考までに。