Шаг 1 - Создание приложения Nest
nx generate @nrwl/nest:app myapp
Шаг 2 - Добавление функций (не внутри папки apps
).
npm install -g firebase-tools
firebase init functions
Удаление каталога функций.
rm -rf functions
Теперь обновите конфигурацию firebase firebase.json
, чтобы указать на вложенное приложение.
{
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint",
"npm --prefix \"$RESOURCE_DIR\" run build"
],
"source": "."
}
}
Шаг 3 - Установите зависимости
npm i firebase-functions firebase-admin express @nestjs/platform-express
Шаг 4 - Обновите пакет. json
Добавьте следующие строки в свой пакет. json.
"main": "dist/apps/myapp/main.js",
"engines": {
"node": "<=10"
}
Шаг 5 - Экспорт сервера
Переопределите содержимое внутри вашего apps/myapp/src/main.ts
.
import { NestFactory } from '@nestjs/core';
import { ExpressAdapter } from '@nestjs/platform-express';
import { AppModule } from './app/app.module';
import * as express from 'express';
import * as functions from 'firebase-functions';
const server = express();
export const createNestServer = async (expressInstance) => {
const app = await NestFactory.create(
AppModule,
new ExpressAdapter(expressInstance),
);
return app.init();
};
createNestServer(server)
.then(v => console.log('Nest Ready'))
.catch(err => console.error('Nest broken', err));
export const api = functions.https.onRequest(server);
Шаг 6 - Сборка, обслуживание, развертывание
nx build myapp && firebase serve --only functions