Runtime features an integrated package manager that handles the retrieval, installation, and deployment of third-party packages to support your Functions. This enables developers to access an incredible collection of packages provided by the Node.js community via npm.
Default Dependencies
The default version of the Twilio SDK and Runtime handler are a part of all Builds.
You will always see twilio and @twilio/runtime-handler in the Dependencies pane of the Twilio Console UI, package.json if using the Serverless Toolkit, and in the Build response returned by the Serverless API.
(information)
Info
@twilio/runtime-handler is not utilized by Functions (Classic), and is not a default dependency in that context.
Managing Dependencies
(warning)
Warning
Only public packages, like those hosted by npm, can be managed by the methods below. If you require a private package, you should add it as a private Asset and access it from your Function's code instead.
Developers can add, remove and update Dependencies through the Console.
Click the Dependencies option under Settings to see your Dependencies in the Functions Editor.
This list includes all the npm modules currently installed for the deployed Function.
Adding a new Dependency
Enter the name and version of the npm module you want to include in the first row of empty fields.
Click Add. This will prepare your next Deployment to install and bundle the npm module with your Functions.
Changing the version of a Dependency
Find the npm module you want to update in the Dependencies list and click Edit. Then, enter the new version you want to use in the Version field.
Click Update. This will update the version of the npm module to the specified version on the next Deployment of your Functions.
Removing a Dependency
Click Delete to remove any package you want to remove from Dependencies. On the next Deployment of your Functions, the package will no longer be included.
If you have created your project using the Serverless Toolkit, you will manage your project dependencies using your preferred Node.js package manager and the package.json file instead of the Twilio Console.
On project creation, package.json should include some minimum defaults, such as the following:
1
// package.json
2
{
3
// Other values omitted...
4
"dependencies": {
5
"twilio":"^3.56",
6
"@twilio/runtime-handler":"1.2.1"
7
},
8
"devDependencies": {
9
"twilio-run":"^3.4.0"
10
}
11
}
Adding a new Dependency
Use your package manager of choice to install any new dependencies or development dependencies. Using npm, an example command would be:
npminstall axios
Deploy your project to ensure that the dependency is available for the deployed Function. For example:
twilioserverless:deploy
Changing the version of a Dependency
Update the version of the intended dependency
Use your package manager of choice to update your intended dependency. For example:
npmupdate axios
Manually change the dependency's version range in package.json, then run the equivalent of npm install to install the newly specified version.
Deploy your project to ensure that the dependency is available for the deployed Function. For example:
twilioserverless:deploy
Removing a Dependency
Use your package manager of choice to remove the desired dependency. For example:
npmuninstall axios
Deploy your project to ensure that the dependency is removed from all subsequent deployments. For example:
twilioserverless:deploy
For additional details, check out the Project Dependencies section of the Serverless Toolkit docs.
Functions(Classic) is a prior version of Twilio Functions. This is completely independent of the current Functions and Assets API and works in conjunction with Assets(Classic).
Developers can add, remove and update Dependencies through the Console. Dependencies can be found in Functions Settings under the Dependencies header. This list includes all the npm modules currently installed in the Functions Environment.
Adding a new Dependency
Click the + button at the top of the Packages list. This will add a new row to the Packages table.
Enter the name and version of the npm module you want to include in the new row.
Click Save. This will install and deploy the npm module to the Functions Environment.
Changing the version of a Dependency
Find the npm module you want to update in the Packages list. Then enter the new version you want to use in the Version field.
Click Save. This will update the version of the npm module and deploy the Functions Environment with the specified version.
Removing a Dependency
Click the x on the npm module that you want to remove from your Packages list.
Click Save. The npm module will be uninstalled, and the Functions Environment will be deployed to complete the removal.
Staying up to date
Keeping Twilio helper libraries up to date enables you to take advantage of the latest Twilio product functionality.
If using the Serverless Toolkit and package.json, you could alternatively use a dependency version range such as "latest".
(warning)
Warning
The version of @twilio/runtime-handler must be defined as an explicit value, such as 1.2.1. Using version ranges, such as * and latest, will result in a Build failure.
Limitations
Native packages are not supported — Runtime does not provide a C/C++ compiler, which is required to compile native add-on modules. This means modules that depend on node-gyp can not be used in your Functions.
npm modules limit — Services are limited in the number of npm modules that may be installed. This is dependent on which version of Runtime you are using:
Current version: 100 modules.
Functions (Classic): 20 modules.
To raise these limits for one of your Services, please contact Twilio Support.