# Development To aid in the development of new libraries of triggers and functions, you can use the type declaration files for the [triggers and functions API](http://redis.io/docs/latest/operate/oss_and_stack/stack-with-enterprise/deprecated-features/triggers-and-functions/concepts/JavaScript_API), which allows your preferred development environment to provide autocompletion and type checking. You can install this information using the following command: ```bash npm install http://gitpkg.now.sh/RedisGears/RedisGears/js_api --save-dev ``` Or you can manually add it as a devDependency to your `package.json` file: ```json "devDependencies": { "@redis/gears-api": "http://gitpkg.now.sh/RedisGears/RedisGears/js_api" } ``` ## Example project setup Create an empty directory for your new triggers and functions project, `my_first_project`. Navigate to the folder and run the following command: ```bash $ npm init -y -f npm WARN using --force Recommended protections disabled. Wrote to /home/work/my_first_project/package.json: { "name": "my_first_project", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" } ``` Update the `package.json` to add the gears API to the `devDependencies` object. ```js { "name": "my_first_project", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "devDependencies": { "@redis/gears-api": "http://gitpkg.now.sh/RedisGears/RedisGears/js_api" }, "keywords": [], "author": "", "license": "ISC" } ``` Install the dependencies using `npm install`. Create a new file, `index.js` and import the gears-api module. While this step is not strictly necessary, doing so will enable code intelligent code completion when adding the `registerFunction`: ```JavaScript #!js name=lib api_version=1.0 import { redis } from '@redis/gears-api'; redis.registerFunction("test", ()=>{ return "test"; }); ``` To automate the deployment, update the `scripts` section in `package.json`: ```json "scripts": { "deploy": "gears-api index.js" } ``` Now you can deploy your code to Redis Stack using the following command: ```bash > npm run deploy -- -r redis://localhost:6379 > deploy > gears-api index.js Deployed! :) ``` The provided URL should follow the following format: `` You can now run your Redis Stack function: ```bash 127.0.0.1:6379> TFCALL lib.test 0 "test" ``` ## Example function using a third-party `npm` package If you want to use a third-party `npm` package in your Redis Stack function, the overall process is nearly the same as already discussed, with just a couple of differences. First, you'll need to install your package using `npm install`. For this example, the `pi` symbol from the `math.js` library will be used in a simple function that calculates the area of a circle. ```bash npm install mathjs ``` Note: your `package.json` file will also be updated with the new dependency. For example: ```json "dependencies": { "mathjs": "^12.0.0" } ``` Next, you'll import the required symbol(s) into your function. ```javascript #!js api_version=1.0 name=lib import { redis } from '@redis/gears-api'; import { pi } from 'mathjs'; function calculateCircleArea(client, radius) { return pi * radius * radius; } redis.registerFunction('calculateArea', calculateCircleArea); ``` Load and run your new function as described in the previous section.