Поскольку Nrwl выпустил поддержку узловых приложений, я с нетерпением ждал аналогичной поддержки функций Firebase. Я даже создал для этого проблему на GitHub . На момент написания он все еще открыт, поэтому я решил создать собственное решение.
Когда вы инициализируете Firebase Functions с firebase initего помощью, он создает подкаталог functions со своим собственным package.jsonи node_modules. Это не хорошо. Мы хотим поделиться кодом с функциями и управлять им с помощью Nx.
package.jsonиnode_moduleslibsМы предполагаем, что у вас есть рабочий проект Nrwl с приложением Angular. Также рекомендуется иметь учетную запись Firebase и понимать, что такое функции Firebase.
Если вы еще этого не сделали, установите firebase-toolsи войдите:
yarn global add firebase-tools
firebase login
{
"projects": {
"default": "your-firebase-project-name"
}
}
Как указано в цели, функции должны быть основаны на node-app. Для этого создайте node-appименованные «функции»:
ng add @nrwl/node # Adds Node capabilities
ng g @nrwl/node:application functions
Установить зависимости Firebase Functions
yarn add firebase firebase-admin firebase-functions
import * as functions from 'firebase-functions';
// // Start writing Firebase Functions
// // https://firebase.google.com/docs/functions/typescript
//
export const helloWorld = functions.https.onRequest((request, response) => {
response.send('Hello from Firebase!');
});
Чтобы настроить функции Firebase так, чтобы они были понятны, создайте firebase.jsonв корневом каталоге:
{
"functions": {
"predeploy": [
"yarn lint functions",
"yarn build functions --prod"
],
"source": "/"
}
}
sourceуказывает на корень проекта. Поскольку у нас только один, package.jsonи он находится в корневом каталоге, он должен указывать туда."main": "dist/apps/functions/main.js",
"engines": {
"node": "10"
},
engineсообщает Firebase, на какой версии узла он должен быть запущен. На момент написания node v10поддерживается новейшая версия. Также вы НЕ МОЖЕТЕ указать здесь yarnили npmверсию, потому что это будет конфликтовать с firebase.Обслуживание функций Firebase немного сложнее, чем типичное приложение узла. Добавьте эту зависимость от разработчика:
yarn add concurrently -D
"firebase:serve": "concurrently --kill-others \"yarn run build functions --watch\" \"firebase serve --only functions\"",
"firebase:shell": "concurrently --kill-others \"yarn run build functions --watch\" \"firebase functions:shell\" --raw",
"firebase:deploy": "firebase deploy",
yarn firebase:shell - запускать оболочку функций локальноyarn firebase:deploy --only functions - функции развертыванияНа момент написания firebase serveвыполняет функции только из distкаталога. Чтобы заставить его работать, мы используем concurrentlyдля запуска buildс watchфлагом и serve«одновременно».
Это в значительной степени покрывает это. Простой и элегантный способ включить функции Firebase в проект Nx. Исходный код для этого можно найти здесь . Однако он активно развивается, поэтому, если вы хотите ознакомиться с ЭТОЙ версией, ознакомьтесь с этой фиксацией .
На этой неделе я получил электронное письмо от участника ежедневного списка рассылки. Они хотели знать: какие ресурсы вы посещаете ежедневно, еженедельно и ежемесячно? Отличный вопрос! Я рад поделиться некоторыми мыслями о моем рабочем процессе и основных ресурсах, которые я использую.
Цель этой серии блогов — углубиться в библиотеку Lit и получить всестороннее представление о ее уникальных функциях и о том, чем она отличается от других библиотек и фреймворков на рынке. Серия разделена на три части, охватывающие такие темы, как 1.
Во избежание двусмысленности будут использоваться следующие термины; Аутентификатор; Мобильный телефон, используемый для входа на веб-сайт; веб-сайт или приложение, которое пользователь использует для выполнения запроса на вход в систему; Поставщик, предоставляющий данную услугу, например
Было уже за полночь, когда Хейден отвез Кэти обратно в общежитие колледжа после их совместного вечера. У нее был ранний урок утром, и у нее не было другой смены одежды после того, как она осталась с ним прошлой ночью.
Любой здравомыслящий человек знает, что в политических и медийных кругах доминируют левые, даже крайне левые, что создает дисбаланс в политическом дискурсе. В области религии этот дисбаланс хорошо виден: левые газеты и сети не спешат защищать христианскую веру.
Сколько раз вы, не задумываясь, выбрасывали пластиковую бутылку, стеклянную банку, алюминиевую банку или пакет экологически чистой энергии? Сколько раз вы хотели получить что-то взамен за их переработку? Если вы похожи на большинство людей, ответ, вероятно, много раз. Переработка часто рассматривается как хлопотное дело, рутинная работа или обязанность, не приносящая немедленных или ощутимых выгод.