Utiliser ftp-deploy avec node.js

ftp-deploy est un package node.js qui permet de déployer un dossier de votre disque local vers un dossier distant en utilisant le protocole FTP .
Ce package utilise promise-ftp-common.

Installation

J'installe les packages avec yarn .

$ yarn add ftp-deploy promise-ftp-common --dev

Je peux vérifier l'installation dans mon fichier package.json.

# fichier: package.json
"devDependencies": {
...
"ftp-deploy": "^2.3.3",
"promise-ftp-common": "^1.1.5"
...
}

Configuration

Je crée un fichier deploy.js à la racine de mon code source et j'ajoute une commande de script dans le fichier package.json pour lancer le déploiement avec yarn.

# fichier: package.json
"scripts": {
...
"deploy": "node deploy"
},

J'écris la configuration dans deploy.js.

/* fichier: deploy.js */
var FtpDeploy = require("ftp-deploy");
var ftpDeploy = new FtpDeploy();

var config = {
user: "utilisateur",
password: "mot_de_passe",
host: "hôte",
port: 21,
localRoot: __dirname + "/dossier/local/",
remoteRoot: "/dossier/distant/",
include: ["*", "**/*"],
deleteRemote: false,
forcePasv: true
};

ftpDeploy
.deploy(config)
.then(res => console.log("finished:", res))
.catch(err => console.log(err));

Options

  • include : upload tous les fichiers sauf les « dot files ».
  • deleteRemote : si true, efface tous les dossiers ou fichiers présents dans le dossier de destination.
  • forcePasv : si true, le mode passif est forcé. La commande PASV indique au serveur qu'il doit attendre passivement la connexion en écoutant un port TCP.

Pour être informé de ce que fait ftp-deploy, j'ajoute les lignes suivantes.

/* fichier: deploy.js */
ftpDeploy.on("uploading", function(data) {
data.totalFilesCount; // total des fichiers à transférer
data.transferredFileCount; // total des fichier transférés
data.filename; // fichier en cours de transfert
});
ftpDeploy.on("uploaded", function(data) {
console.log(data); // données identiques à l'événement "uploading"
});
ftpDeploy.on("log", function(data) {
console.log(data); // données identiques à l'événement "uploading"
});

Je peux maintenant lancer le script de déploiement FTP avec la commande :

$ yarn deploy

Liens