Итак, существует несколько способов развертывания лямбда-функций Netlify. Имейте в виду, что лямбда-функции - это просто модули узлов, которые экспортируют обработчик. После сборки Netlify будет использовать значение функции при сборке в netlify.toml
, чтобы получить каталог для развертывания ваших функций.
Распространенные способы создания этих функций
- Использование Netlify Cli (
netlify-cli
) с терминала.
- Во время CI / CD используйте
netlify-lambda
cli, чтобы связать функции из источника
расположение в папке, указанной в вашем netlify.toml
под
build.functions
. Это позволяет подготовить их к развертыванию
с базовой настройкой webpack / Babel для современного Javascript.
- Не выполняйте предварительную обработку, а просто поместите свои функции непосредственно в каталог, указанный в
netlify.toml
в build.functions
.
Последний вариант - это тот, который вы, вероятно, хотите использовать в этом случае.
Настройка ваших функций для развертывания с использованием последней опции
netlify.toml
[build]
functions = "functions"
/functions/somefunction/somefunction.js
var mysql = require('mysql');
.
.
exports.handler = (event, context) => {
.
.
}
.
Создайте файл /functions/somefunction/package.json
с необходимыми зависимостями. В этом случае вы будете использовать mysql
и любые другие, которые вам требуются в ваших функциях. Также следует использовать файл package-lock.json
, чтобы заблокировать нужную версию.
В вашем корневом package.json установите команду сценария предварительной обработки на cd ./functions/somefunction && npm install
, чтобы установить зависимости перед любыми командами сборки. Это объединит зависимости в /functions/somefunction/node_modules
и будет готово для развертывания netlify вместе с вашей функцией somefunction
. Команда pre-process позволит вам оставить node_modules из вашего репозитория git.
Вот пример create-react-app
с функциями netlify , который использует метод, описанный выше, где функции не связаны с помощью веб-пакета или netlify-lambda
, но имеют зависимости, которые предварительно устанавливаются во время сборки до развертывания. В этом примере используется подкаталог для функции joke-async
.