GithubHelp home page GithubHelp logo

martinbryant / ftp-deploy Goto Github PK

View Code? Open in Web Editor NEW

This project forked from simonh1000/ftp-deploy

0.0 1.0 0.0 127 KB

Node.js module to ftp a folder somewhere

License: Other

JavaScript 100.00%

ftp-deploy's Introduction

ftp-deploy

A Node.js package to help with deploying code. Ftp a folder from your local disk to a remote ftp destination. Does not delete from destination directory.

Version 2.0.0 is an almost complete re-write to use promises and promise-ftp instead of jsftp. The one breaking change is listed in the Usage section.

Installation

npm install --save-dev ftp-deploy

Usage

I create a file - e.g. deploy.js - in the root of my source code and add a script to its package.json so that I can npm run deploy.

"scripts": {
    "deploy": "node deploy"
},

The most basic usage (stops uploading when an error occurs): Note: that in version 2 the config file expects a field of user rather than username in 1.x.

var FtpDeploy = require('ftp-deploy');
var ftpDeploy = new FtpDeploy();

var config = {
	user: "user",                   // NOTE that this was username in 1.x 
    password: "password",           // optional, prompted if none given
	host: "ftp.someserver.com",
	port: 21,
	localRoot: __dirname + '/local-folder',
	remoteRoot: '/public_html/remote-folder/',
	// include: ['*', '**/*'],      // this would upload everything except dot files
	include: ['*.php', 'dist/*'],
    exclude: ['dist/**/*.map'],     // e.g. exclude sourcemaps
    deleteRemote: true              // delete existing files at destination before uploading
}

// use with promises
ftpDeploy.deploy(config)
	.then(res => console.log('finished'))
	.catch(err => console.log(err))
	
// use with callback
ftpDeploy.deploy(config, function(err) {
	if (err) console.log(err)
	else console.log('finished');
});

Configuration

You need to list all file patterns that you want to include for uploading, and the exclude option enables exceptions to the rule

  • include: all files that match will be uploaded. Note that a [ ] matches nothing
  • exclude: if a file matches the include pattern a subset may nonetheless be excluded

Events

To be notified of what ftpDeploy is doing:

ftpDeploy.on('uploading', function(data) {
    data.totalFilesCount;       // total file count being transferred
    data.transferredFileCount; // number of files transferred
    data.filename;             // partial path with filename being uploaded
});
ftpDeploy.on('uploaded', function(data) {
	console.log(data);         // same data as uploading event
});

To continue uploading files even if a file upload fails (not implemented at present):

ftpDeploy.on('upload-error', function (data) {
	console.log(data.err); // data will also include filename, relativePath, and other goodies
});

Testing

A script to run a simple ftp server (using ftp-srv) is included, together with a test directory.

To use open a console to run the ftp server:

npm run test_server

and then in another console run the tests:

npm test

ToDo

re-enable continueOnError

ftp-deploy's People

Contributors

rickbergfalk avatar simonh1000 avatar der-on avatar keyle avatar jonycheung avatar almostinteractive avatar amfio avatar pirumpi avatar sourcesoft avatar vtrofin avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.