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 |
このようになる。便利。