Introduction to ftp-deploy
ftp-deploy is a robust and efficient tool designed for deploying files to a remote server via FTP. This tool simplifies the process of uploading, downloading, and managing files, making it an essential utility for web developers and administrators. Let’s delve into the variety of APIs offered by ftp-deploy and learn how to implement them with code examples.
Getting Started with ftp-deploy
const FtpDeploy = require('ftp-deploy'); const ftpDeploy = new FtpDeploy();
Create an instance of ftp-deploy
and start deploying!
Configuration Options
Define your configuration object to specify the connection details and deployment options:
const config = { user: "username", password: "password", host: "ftp.yourserver.com", port: 21, localRoot: __dirname + "/local-folder", remoteRoot: "/remote-folder/", include: ["*", "**/*"], // this would upload everything exclude: ["dist/**/*.map"], // e.g. exclude sourcemaps deleteRemote: false, // don't remove any existing files on the remote server forcePasv: true // use passive mode for the connections };
Deploying Files
Use the deploy
method to start the deployment:
ftpDeploy.deploy(config) .then(res => console.log("Finished:", res)) .catch(err => console.log("Error:", err));
Deploying with Event Listeners
ftp-deploy emits events during the deployment process. You can listen to these events for better control:
ftpDeploy.on("uploading", data => { console.log(`Uploading ${data.filename}(${data.transferredFileCount}/${data.totalFilesCount})`); }); ftpDeploy.on("uploaded", data => { console.log(`Uploaded ${data.filename}(${data.transferredFileCount}/${data.totalFilesCount})`); }); ftpDeploy.on("log", data => { console.log(data); }); ftpDeploy.on("upload-error", data => { console.log(`Error uploading ${data.filename}: ${data.err}`); });
This allows you to monitor the progress and handle errors more efficiently.
Example Application
Let’s consider an application that uploads a website’s build directory to a remote server after every new build:
const FtpDeploy = require("ftp-deploy"); const { exec } = require("child_process"); exec("npm run build", (err, stdout, stderr) => { if (err) { console.error(`Build error: ${stderr}`); return; } console.log("Build complete. Deploying..."); const config = { user: "username", password: "password", host: "ftp.yourserver.com", port: 21, localRoot: __dirname + "/build", remoteRoot: "/public_html/", include: ["*", "**/*"], deleteRemote: true, forcePasv: true }; const ftpDeploy = new FtpDeploy(); ftpDeploy.deploy(config) .then(res => console.log("Deployment finished:", res)) .catch(err => console.log("Deployment error:", err)); });
This script will build the project and deploy the generated files to the specified remote server folder.
With ftp-deploy, managing remote files becomes straightforward and automatable, allowing you to focus more on development and less on the intricacies of file transfers.
Hash: b325592a4980718e21580475c400abdde443b7eee344352280270f17ab95e7cb