В этом посте я объясню, как использовать код 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 в корневом каталоге.

Если вы нашли это полезным, порекомендуйте и поделитесь с друзьями и коллегами. ❤️