В этом посте я объясню, как использовать код ES6 + в ваших облачных функциях. Поскольку не все функции ES6 + поддерживаются, мы будем использовать babel для транспиляции.
Если вы не знаете, как настроить облачную функцию, прочтите этот пост 💯.
Теперь, когда у нас есть базовая функция, давайте напишем код ES6 +.
Реструктуризация
Переименуйте functions
во что-нибудь другое, я предлагаю использовать app
.
Теперь установите package.json
в корневой папке для автоматизации сценариев. Запустите npm init -y
в корневой папке, которая принимает все параметры.
Установите babel и rimraf с npm i rimraf babel-cli babel-preset-env --save-dev
.
Скрипты NPM (автоматизируем скучные вещи !!) 😎
Теперь у нас есть необходимые пакеты и структура папок, давайте добавим наши скрипты.
Записав это, мы хотим, чтобы babel перекомпилировал все файлы JavaScript в каталоге ./app
и выводил результаты, совместимые с Node, в каталог ./functions
. После транспиляции с использованием указанной предустановки babel копии всех файлов, которых Babel не коснулся, перемещаются в место назначения. Он должен игнорировать каталог node_modules
, потому что все они совместимы с ES5.
Добавьте узел scripts
к вашему package.json
.
Назовите свои скрипты как хотите. Я использую build
.
"build": "babel app --out-dir functions --copy-files --ignore app/node_modules"
Создать .babelrc
файл конфигурации
Вставьте это в .babelrc
, который сообщает babel о необходимости преобразования в совместимую с версией firebase:
{
"presets": [
["env", {
"targets": {
"node": "6.11.5"
}
}]
]
}
Примечание. Если вы попытаетесь развернуть базу данных сейчас , вы столкнетесь с ошибкой. Это потому, что в новом functions
каталоге нет node_modules
.
Теперь нам нужно установить пакеты после транспилирования babel. Вы когда-нибудь слышали о pre и post хуках в npm, читайте больше здесь.
Добавьте этот сценарий "postbuild": "cd functions && npm i -s"
в свой ./package.json
. Итак, после транспиляции пакеты устанавливаются в каталог functions
.
Кроме того, поскольку мы хотели бы очищать каталог функций при каждой сборке. Давайте подключим "prebuild": "node node_modules/rimraf/bin functions"
.
Для развертывания добавьте "deploy": "npm run build && firebase deploy"
.
Ваш ./package.json
должен выглядеть
И ./app/package.json
вот так:
Развернуть 🚀
Продолжайте и выполняйте развертывание, запустив npm run deploy
в корневом каталоге.
Если вы нашли это полезным, порекомендуйте и поделитесь с друзьями и коллегами. ❤️