Deploy files to a ftp server
npm install @olzie-12/ftp-deploySyncs a local folder with a remote folder over ftp.
After the initial sync only differences are synced, making deployments super fast!


---
npm install @olzie-12/ftp-deploy --only=devftp-deploy --server ftp.olziedev.com --username test@olziedev.com --password \"CrazyUniquePassword&%123\"- Or you can add a script to make deployments easier
- Add a new key to your package.json file under scripts section. See example below.
- You can run the script using the following command npm run deploy (run this in the folder that has the package.json file)
Example of package.json:
``json`
{
"scripts": {
"deploy": "ftp-deploy --server ftp.olziedev.com --username test@olziedev.com --password \"CrazyUniquePassword&%123\"",
},
}
#### Option 2 - Run programmatically
- Install the npm package using npm install @olzie-12/ftp-deploy --only=dev
- Import the code and use it in your code
Example of myCustomDeployment.js:`javascript
import { deploy, excludeDefaults } from "@olzie-12/ftp-deploy";
async function deployMyCode() {
console.log("🚚 Deploy started");
await deploy({
server: "ftp.olziedev.com",
username: "username@olziedev.com",
password: CrazyUniquePassword&%123, // note: I'm using backticks here so I don't have to escape quotes
exclude: [...excludeDefaults, "dontDeployThisFolder/**"] // excludeDefaults will exclude .git files and node_modules
});
console.log("🚀 Deploy done!");
}
deployMyCode();
``
---
To list all commands with examples simply run ftp-deploy without any options.
| Key Name | Required | Example | Default Value | Description |
|---------------------------|----------|----------------------------|-----------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| --server | Yes | ftp.olziedev.com | | Deployment destination server |--username
| | Yes | username@olziedev.com | | ftp username |--password
| | Yes | CrazyUniquePassword&%123 | | ftp password, be sure to escape quotes and spaces |--port
| | No | 990 | 22 | Server port to connect to (read your web hosts docs) |--protocol
| | No | ftp | sftp | ftp: provides no encryption, ftps: full encryption newest standard (aka "explicit" ftps), ftps-legacy: full encryption legacy standard (aka "implicit" ftps) |--local-dir
| | No | ./myFolderToPublish/ | ./ | Path to upload to on the server, must end with trailing slash / |--server-dir
| | No | ftp.olziedev.com/ | ./ | Folder to upload from, must end with trailing slash / |--state-name
| | No | folder/.sync-state.json | .ftp-deploy-sync-state.json | ftp-deploy uses this file to track what's been deployed already, so only differences can be published. If you don't like the name or location you can customize it |--dry-run
| | No | true | false | Prints which modifications will be made with current config options, but doesn't actually make any changes |--dangerous-clean-slate
| | No | true | false | Deletes ALL contents of server-dir, even items marked as --exclude argument |--exclude
| | No | nuclearLaunchCodes.txt | /.git /.git/ /node_modules/** | An array of glob patterns, these files will not be included in the publish/delete process |--log-level
| | No | info | info | minimal: only important info, standard: important info and basic file changes, verbose: print everything the script is doing |--security
| | No | strict | loose | strict: Reject any connection which is not authorized with the list of supplied CAs. loose: Allow connection even when the domain is not in certificate |--timeout
| | No | 60000 | 30000` | Timeout in milliseconds for FTP operations |