ftp-client で指定のファイルを FTP アップロードする
前回、promise-ftp
という node-ftp
のラッパーを紹介した。
今回は ftp-client
というパッケージを使って、FTP アップロードを簡潔に行ってみる。この ftp-client
も、node-ftp
をラップしているパッケージだ。
まずは ftp-client
のインストール。
$ npm i -D ftp-client
今回は、プロジェクト直下の dist/
ディレクトリ内に、アップロード対象のファイルがあるという前提にする。FTP 接続先は、/html-dir/
配下にファイルを配置するというテイにしてみよう。
以下のようなファイル (ftp-upload.js
) を作ったら、$ node ftp-upload.js
で実行できる。
// FTP 接続先情報
const user = 'user';
const password = 'password';
const host = 'example.com';
const FtpClient = require('ftp-client');
const ftpClient = new FtpClient({
user : user,
password: password,
host : host
}, {
logging : 'debug', // ロガーのレベル (詳細表示)
overwrite: 'all' // 全て上書きする
});
ftpClient.connect(() => {
console.log('Connected');
ftpClient.upload(
// アップロードするファイルを選択する
[
'dist/index.html',
'dist/about/index.html',
'dist/about/images/icon.png'
],
// アップロード先のディレクトリを指定する
'/html-dir/',
{
baseDir : 'dist', // ローカルとリモートのディレクトリ位置を揃えるため、ローカルのベースディレクトリを指定する
overwrite: 'all' // 上書き設定
}, (result) => {
console.log('Uploaded', result);
});
});
upload()
の第3引数で指定する baseDir
がミソ。ココでベースディレクトリを揃えておくと、ローカルのディレクトリ構造を保持してリモート側にアップロードできる。
ローカルのパス | 送信先のパス |
---|---|
dist/index.html |
/html-dir/index.html |
dist/about/index.html |
/html-dir/about/index.html |
dist/about/images/icon.png |
/html-dir/about/images/icon.png |
このようになる。便利。