mirror of
https://github.com/treetrum/ftp-deploy
synced 2026-06-06 13:20:57 +10:00
No description
- TypeScript 96%
- JavaScript 4%
| .github/workflows | ||
| @types | ||
| src | ||
| .eslintignore | ||
| .eslintrc.json | ||
| .gitattributes | ||
| .gitignore | ||
| jest.config.js | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| project.code-workspace | ||
| README.md | ||
| tsconfig.json | ||
ftp deploy 🚀
Syncs a local folder with a remote folder over ftp.
After the initial sync only differences and 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
npm run ftp-deploy --server ftp.samkirkland.com --username test@samkirkland.com --password \"CrazyUniquePassword&%123\" -
Or you can add a script to make deployments easier
-
Add a new key to your
package.jsonfile underscripts -
You can run the script using the following command
npm run deploy(run this in the folder that has thepackage.jsonfile)
Example of package.json:
{
"scripts": {
"deploy": "ftp-deploy --server ftp.samkirkland.com --username test@samkirkland.com --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: "username@samkirkland.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();
Automatically Deploying
If you use github as source control you can automatically re-deploy your site on every git commit. Read more
Settings
| Key Name | Required | Example | Default Value | Description |
|---|---|---|---|---|
--server |
Yes | ftp.samkirkland.com |
Deployment destination server | |
--username |
Yes | username@samkirkland.com |
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/** 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 |