Skip to content

[Node.js] Sync local files to remote using SFTP.

License

Notifications You must be signed in to change notification settings

joeyreinders/sftp-sync-deploy

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sftp-sync-deploy

Sync local files to remote using SFTP.

Usage

Javscript

const { deploy } = require('sftp-sync-deploy');

let config = {
  host: 'example.com',            // Required.
  port: 22,                       // Optional, Default to 22.
  username: 'user',               // Required.
  password: 'password',           // Optional.
  privateKey: '/path/to/key.pem', // Optional.
  passphrase: 'passphrase',       // Optional.
  agent: '/path/to/agent.sock',   // Optional, path to the ssh-agent socket.
  localDir: 'dist',               // Required, Absolute or relative to cwd.
  remoteDir: '/path/to/dest'      // Required, Absolute path only.
};

let options = {
  dryRun: false,                  // Enable dry-run mode. Default to false
  exclude: [                      // exclude patterns (glob)
    'node_modules',
    'src/**/*.spec.ts'
  ],
  excludeMode: 'remove',          // Behavior for excluded files ('remove' or 'ignore'), Default to 'remove'.
  forceUpload: false,             // Force uploading all files, Default to false(upload only newer files).
  concurrency: 100                // Max number of SFTP tasks processed concurrently. Default to 100.
};

deploy(config, options).then(() => {
  console.log('success!');
}).catch(err => {
  console.error('error! ', err);
});

TypeScript

import { deploy, SftpSyncConfig, SftpSyncOptions } from 'sftp-sync-deploy';

let config: SftpSyncConfig = {...};
let options: SftpSyncOptions = {...};

deploy(config, options);

Dry run mode

deploy(config, {dryRun: true});

Outputs the tasks to be done for each file in following format. Any changes of the files will not be performed.

[ (local file status) | (remote file status) ] (file path)
                                               -> (task)

Output example

# Local is a file (upload the file)
[ F | F ] index.html
          -> upload

# Local is a directory (sync recursively)
[ D | D ] lib
          -> sync

# Remote exists and local doesn't (remove the remote file or directory)
[   | F ] index.html.bak
          -> remove remote

# Excluded (do nothing)
[ X |   ] node_modules
          -> ignore

# Excluded and remote exists (operation depends on excludeMode option)
[ X | D ] .bin
          -> remove remote # if excludeMode is 'remove'
          -> ignore        # if excludeMode is 'ignore'

# Local and remote have the same name but different types (remove remote then upload local)
[ F | D ] test
          -> remove remote and upload

# Permission error on a remote server (ignored)
[ F | ! ] secret.txt
          -> denied

About

[Node.js] Sync local files to remote using SFTP.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 100.0%