syncodemayo
TypeScript icon, indicating that this package has built-in type declarations

1.0.9 • Public • Published

SyncoDeMayo

A simple FTP syncing tool

What? That server you're uploading files to doesn't support rsync?! Yeah, me too. So here's a simple tool that will sync changed files to an FTP server.

It's pretty simple. SyncoDeMayo caches a list of known files, and their CRCs, on the server. On subsequent syncs it will only upload local files with a different CRC hash value.


Install globally:

$ npm install -g syncodemayo

Or install locally:

$ npm install syncodemayo

Suggested usage as NPM script:

{
  // ... OTHER NPM FIELDS ...
  "script": {
    "sync": "syncodemayo sync staging",
    "sync:production": "syncodemayo sync production"
  }
}

$ syncodemayo

  Usage: syncodemayo [options] [command]


  Options:

    -V, --version        output the version number
    -c, --config [file]  Specify local config [file]
    -h, --help           output usage information


  Commands:

    init [target]            Configure local folder and/or server to sync
    changes|diff [target]    Perform sync dry run and display the changes
    verify [target]          Verify server is configured
    sync [options] [target]  Perform sync to server
    ls                       List defined targets in config

Example syncodemayo.json config:

{
  "local": {
    "path": "public", // Required, local path to sync
    "files": "**/**", // Optional, default='**/***', file glob pattern
    "exclude": ["**/*.map", "**/.DS_Store", "**/.git*"], // Optional, default=[], glob pattern to ingnore
    "defaultTarget": "staging", // Optional, default='staging', target to use if not specified on cmd line
    "deleteRemoteFiles": true // Optional, default=false - for now...
  },
 
  "targets": {
    "staging": {
      "host": "www.myapp.com", // Required
      "path": "MyApp/www/stage", // Required
      "user": "USERNAME", // Required
      "pass": "PASSWORD", // Optional, NOT RECOMMENDED! See note below for better way...
      "port": 21, // Optional, default=21
      "cache": ".synco-filelist", // Optional, default='.synco-filelist'
      "prompt": false, // Optional, default=true, false will upload w/o confirming
      "enabled": false // Optional, default=true
    },
 
    "production": {
      "host": "www.myapp.com",
      "path": "MyApp/www",
      "user": "USERNAME",
      "prompt": "This is for PRODUCTION! Do you really mean it?"
    }
  }
}

You can put the FTP password in the config, but if you're adding it to source control I wouldn't. Instead, add the password to an .env file that you set to ignored in your SCM.

Example .env for above config:

STAGING_PWD=ftpPasswordHere
PRODUCTION_PWD="Other password here"

SyncoDeMayo will automatically look in your .env for passwords if they aren't in your config.

Note: Comments are allowed in config JSON files.

Readme

Keywords

none

Package Sidebar

Install

npm i syncodemayo

Weekly Downloads

11

Version

1.0.9

License

MIT

Last publish

Collaborators

  • elucidata