JSPM

  • Created
  • Published
  • Downloads 4738
  • Score
    100M100P100Q121561F
  • License MIT

CLI tool to run Twilio Functions locally for development

Package Exports

  • twilio-run

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (twilio-run) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

npm npm npm Build Status All Contributors

☁️ twilio-run ☁️

CLI tool to run Twilio Functions locally for development

📦 Installation

You can install the CLI tool via npm or another package manager. Ideally install it as a dev dependency instead of global:

# Install it as a dev dependency
$ npm install twilio-run --save-dev

# Afterwards you can use by using:
$ node_modules/.bin/twilio-run

$ npx twilio-run

# Or inside your package.json scripts section as "twilio-run"

📖 Usage

  CLI tool to run Twilio Functions locally for development

  Usage
    $ twilio-run [dir]

  Options
    --load-local-env, -f Includes the local environment variables
    --env, -e [/path/to/.env] Loads .env file, overrides local env variables
    --port, -p <port> Override default port of 3000
    --ngrok [subdomain] Uses ngrok to create an outfacing url

  Examples
    $ twilio-run
    # Serves all functions in current functions sub directory

    $ twilio-run demo
    # Serves all functions in demo/functions

    $ PORT=9000 twilio-run
    # Serves functions on port 9000

    $ twilio-run --port=4200
    # Serves functions on port 4200

    $ twilio-run --env
    # Loads environment variables from .env file

    $ twilio-run --ngrok
    # Exposes the Twilio functions via ngrok to share them

🔬 API

The module also exposes two functions that you can use outside of the CLI tool:

runDevServer(port: number, baseDir: string): Promise<Express.Application>

This allows you to trigger running an express server that will expose all functions and assets. Example:

const { runDevServer } = require('twilio-run');

runDevServer(9000)
  .then(app => {
    console.log(`Server is running on port ${app.get('port')})`);
  })
  .catch(err => {
    console.error('Something failed');
  });
handleToExpressRoute(handler: TwilioHandlerFunction): Express.RequestHandler

You can take the handler function of a Twilio Function file and expose it in an existing Express server. Example:

const express = require('express');
const bodyParser = require('body-parser');
const { handlerToExpressRoute } = require('twilio-run');

const { handler } = require('./path/to/function.js');

const app = express();
app.use(bodyParser.urlencoded({ extended: false }));

app.all(handlerToExpressRoute(handler));

app.listen(3000, () => console.log('Server running on port 3000'));

💞 Contributing

💖 Please be aware that this project has a Code of Conduct 💖

  1. Fork the project
  2. Clone your own fork like this:
$ git clone git@github.com:dkundel/twilio-run.git
  1. Install the dependencies
$ cd twilio-run
$ npm install
  1. Make changes
  2. Test your changes by running
$ npm test
  1. Commit your changes and open a pull request

✨ Contributors

Thanks goes to these wonderful people (emoji key):


Dominik Kundel

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

📜 License

MIT