// the find
atinux/node-ftps
FTP, FTPS and SFTP client for node.js, mainly a lftp wrapper.
A Node.js wrapper around the `lftp` command-line tool, exposing FTP/FTPS/SFTP operations through a chainable JS API. It's for server-side scripts that need to push or pull files over legacy protocols, not a browser or cross-platform tool.
The `lftp` binary does the heavy lifting, so you get built-in retry logic, mirroring, and SFTP key auth without reimplementing any of it. The chainable API is clean enough — `ftps.cd('dir').addFile('./file').exec(cb)` reads naturally. The `additionalLftpCommands` escape hatch is genuinely useful for legacy SFTP servers requiring old key exchange algorithms. `execAsStream()` is a nice touch for large directory listings.
Hard dependency on `lftp` being installed on the host machine means this breaks in any managed runtime, Docker scratch image, or Windows CI without extra setup steps. The error handling is honest about being bad — failed commands don't short-circuit the chain, so a `cd` to a missing directory will silently proceed to upload the file to the wrong place. Last commit was January 2023 and the Travis CI badge is the only test infrastructure, which has been dead for public repos for years. The entire library is a single `index.js` that shells out via `spawn`, so debugging what `lftp` actually received requires reading the source.