Skip to content

Deploy websites over FTP with one command line

License

Notifications You must be signed in to change notification settings

hugoj-goncalves/ftp-deploy

 
 

Repository files navigation

ftp deploy 🚀

Syncs a local folder with a remote folder over ftp.

After the initial sync only differences are synced, making deployments super fast!

Latest Stable Version NPM Downloads


How to Run

Option 1 - Run via command line

  • Install the npm package using npm install @samkirkland/ftp-deploy --only=dev

  • Run via command line ftp-deploy --server ftp.samkirkland.com --username [email protected] --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:

{
  "scripts": {
    "deploy": "ftp-deploy --server ftp.samkirkland.com --username [email protected] --password \"CrazyUniquePassword&%123\"",
  },
}

Option 2 - Run programmatically

  • Install the npm package using npm install @samkirkland/ftp-deploy --only=dev
  • Import the code and use it in your code

Example of myCustomDeployment.js:

import { deploy, excludeDefaults } from "@samkirkland/ftp-deploy";

async function deployMyCode() {
  console.log("🚚 Deploy started");
  await deploy({
    server: "ftp.samkirkland.com",
    username: "[email protected]",
    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();

Automatically Deploying

If you use github as source control you can automatically re-deploy your site on every git commit. Read more


Settings

To list all commands with examples simply run ftp-deploy without any options.

Key Name Required Example Default Value Description
--server Yes ftp.samkirkland.com Deployment destination server
--username Yes [email protected] ftp username
--password Yes CrazyUniquePassword&%123 ftp password, be sure to escape quotes and spaces
--port No 990 21 Server port to connect to (read your web hosts docs)
--protocol No ftps ftp 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.samkirkland.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

About

Deploy websites over FTP with one command line

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 97.4%
  • JavaScript 2.6%