@immachakata/ftp-deploy
v1.2.5
Published
Deploy files to a ftp server
Downloads
3
Readme
ftp deploy 🚀
Syncs a local folder with a remote folder over ftp.
After the initial sync only differences are synced, making deployments super fast!
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 underscripts
section. See example below.You can run the script using the following command
npm run deploy
(run this in the folder that has thepackage.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 |