Skip to content

☁️ CLI tool to run Twilio Functions locally for development

License

Notifications You must be signed in to change notification settings

stefanjudis/twilio-run

 
 

Repository files navigation

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

💻

dbbidclips

💻 🐛

Shelby Hagman

🐛 💻

JavaScript Joe

🐛

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

📜 License

MIT

About

☁️ CLI tool to run Twilio Functions locally for development

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%