Socket
Socket
Sign inDemoInstall

envoy

Package Overview
Dependencies
32
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    envoy

Better Deployment with Node.js


Version published
Maintainers
1
Install size
5.58 MB
Created

Readme

Source

#Envoy Fast, simple deployment of static sites.

Build Status

##Goals

  • Correctness
  • Speed
  • Simplicity

##Supported Services

  • S3
  • FTP

##High-Level Calls


var envoy=require('envoy')
  , ftpOptions = {
      username: 'Fluffy'
    , password: 'McChubbers'
    , host:     'ftp.cheeseburger.com'
    }
  , s3Options = {
      "bucket": "<BUCKET NAME>"
    , "key": "<AWS ACCESS KEY>"
    , "secret": "<AWS SECRET KEY>"
    , "region": "<AWS REGION>"      //us-west-1
    }
  , simpleWebsite = {
      "index.html": '<h1>Welcome, Humans!</h1>'
    }
  , afterDeploy = function (err, log) {
    if(err) {
      console.err("Uh-oh: " + err);
    }
    else {
      console.log("Website Deployed!");
      
      console.log("Deployment log:");
      for(var i=0, ii=log.length; i<ii; i++) {
        console.log(log[i]);
      }
    }
  };

// Deploying a local folder to S3
envoy.deployFolder('./my-website-folder', 's3', s3Options, afterDeploy);

// Deploying a collection of files to FTP
envoy.deployCollection(simpleWebsite, 'ftp', ftpOptions, afterDeploy);

##Low-Level Calls

You can perform lower level calls with the adapters directly.

  var client = new require('./lib/adapters/ftp')
    , opts = {username:'donkey', password:'kong'};
  
  client.before(opts, function (err) {
  
    client.put('some_file.txt', new Buffer('Some Data'), function (err) {
    
      client.after( function (err) {
        console.log("Done!");
      } );
      
    });
    
  });

All adapters support three operations

  • before
  • put
  • get
  • destroy
  • after

Certain adapters like FTP will support more operations unique to their operation

  • mkdir
  • rmdir
  • list

Take a look at the tests for more.

##Notes

  • We leave a .envoy file in the remote directory to speed up future deploys. Make sure your FTP server is configured to show dotfiles.

##Testing You'll need a tests/secrets.json file to run the tests with jake test. See tests/secrets.example.json for an example secrets.json file. To test integration with different backends, you can have multiple secret files, name them secrets.somestring.json and run the tests with jake testWith[somestring].

  • FTP
    • Ensure user has write permissions
    • Server should be configured to show .dotfiles
    • Server should not auto-rename uploaded files on conflict
    • We are tested against pure-ftpd and vsftpd
  • S3
    • Enable static website hosting yourself
    • We'll set x-amz-acl = public-read on uploaded objects

Keywords

FAQs

Last updated on 03 Aug 2015

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc