☁️ 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:
$ npm install twilio-run --save-dev
$ node_modules/.bin/twilio-run
$ npx 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
--no-logs Turns request logging off
--detailed-logs Turns on detailed request logging
--live Always serve from the current functions (no caching)
--inspect [host:port] Enables Node.js debugging protocol
--inspect-brk [host:port] Enables Node.js debugging protocol, stops execution until debugger is attached
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 💖
- Fork the project
- Clone your own fork like this:
$ git clone git@github.com:dkundel/twilio-run.git
- Install the dependencies
$ cd twilio-run
$ npm install
- Make changes
- Test your changes by running
$ npm test
- Commit your changes and open a pull request
✨ Contributors
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
📜 License
MIT