Skip to content

A CLI Tool for running and testing portable Node.js functions locally

Notifications You must be signed in to change notification settings

vwedesam/functions-runner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Functions Runner for Node.js

A CLI Tool (based on Express) for running and testing portable Node.js functions locally Without needing to worry about writing an HTTP server or complicated request handling logic.

Support

It helps spin up a local development server for quick testing of Functions from different providers, including:

Installation

Add the CLI Tool to your package.json file using npm.

npm install functions-runner

Quickstarts

Quickstart: Hello, World on your local machine

  1. Create an index.js file with the following contents:

    exports.helloWorld = (req, res) => {
      res.send('Hello, World');
    };
  2. Run the following command:

    npx functions-runner --target=helloWorld
  3. Open http://localhost:8080/helloWorld in your browser and see Hello, World.

you can a start script to package.json, with configuration passed via command-line arguments:

```js
  "scripts": {
    "start:dev": "functions-runner --target=helloWorld"
  }
```
  1. Use npm run start:dev to start the built-in local development server:

    npm run start:dev
    ...
    Serving function...
    Function: helloWorld
    URL: http://localhost:8080/
  2. Send requests to this function using curl from another terminal window:

    curl localhost:8080/helloWorld
    # Output: Hello, World

Configure the Functions Runner

You can configure the Functions Framework using command-line flags or environment variables. If you specify both, the environment variable will be ignored.

Command-line flag Default Description
--port 8080 The port on which the Functions Framework listens for requests. e.g --port=3000
--target required The name of the exported function to be invoked in response to requests. e.g --target=helloWorld
--targets optional The name of the exported functions to be invoked in response to requests e.g --targets=helloWorld,function,greeting
--src dir defined by main in package.json The path to index.js where the function(s) are exported from. e.g --src=dist/index.js
--provider GCP Supported Serverless provider GCP, AWS. e.g --provider=aws

TypeScript

Add this scripts to package.json

    "build": "tsc",

    "dev": "npm run build && npx functions-runner --target=helloWorld --src=dist/index.js",

    "start": "npm run build && node dist/index.js"

don't forget to add this to tsconfig.json

  "outDir": "dist/"