Nx Nrwl Firebase 함수

Nrwl 이 노드 애플리케이션에 대한 지원 을 출시 한 이후로 저는 Firebase 함수에 대한 유사한 지원을 기대하고있었습니다. 나는 심지어 GitHub 에 문제를 만들었습니다 . 글을 쓰는 시점에는 여전히 열려 있기 때문에 나만의 솔루션을 만들기로 결정했습니다.

문제

Firebase 함수를 초기화하면 firebase init자체 package.json및 node_modules. 그건 좋지 않다. 함수와 코드를 공유하고 Nx를 사용하여 관리하고 싶습니다.

골

  • Firebase 함수는 노드 앱으로 존재합니다.
  • 단 하나의 존재 package.json와node_modules
  • 함수는 다음의 공유 코드를 사용할 수 있습니다.libs

Angular 응용 프로그램과 함께 작동하는 Nrwl 프로젝트가 있다고 가정합니다. 또한 Firebase 계정이 있고 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 함수 종속성 설치

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지원되는 최신입니다. 또한 firebase와 충돌하므로 여기에서 yarn또는 npm버전을 지정할 수 없습니다 .

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실행 하는 데 사용 합니다 .buildwatchserve

요약

이것은 거의 그것을 다룹니다. Firebase 함수를 Nx 프로젝트에 통합하는 쉽고 우아한 방법입니다. 이에 대한 소스 코드는 여기 에서 찾을 수 있습니다 . 그러나이 버전은 활발하게 개발되었으므로이 버전을 검토하려면 이 커밋을 확인 하십시오 .

Suggested posts

내가 가장 많이 사용하는 코딩 리소스

내가 가장 많이 사용하는 코딩 리소스

이번 주에 저는 일일 이메일 목록의 회원으로부터 이메일을 받았습니다. 그들은 알고 싶어했습니다. 매일, 매주, 매월 어떤 리소스를 방문합니까? 좋은 질문입니다! 제 작업 흐름과 제가 사용하는 주요 리소스에 대한 통찰력을 공유하게 되어 기쁩니다.

Lit 라이브러리 시리즈 — 1: lit-html 라이브러리에 대한 심층 분석

Lit 라이브러리 시리즈 — 1: lit-html 라이브러리에 대한 심층 분석

이 블로그 시리즈의 목적은 Lit 라이브러리를 깊이 탐구하고 Lit 라이브러리의 고유한 기능과 시장의 다른 라이브러리 및 프레임워크와 차별화되는 방법을 포괄적으로 이해하는 것입니다. 이 시리즈는 1과 같은 주제를 다루는 세 부분으로 나뉩니다.

Related posts

미디어 재검토: McChesney의 다섯 가지 진실과 커뮤니케이션의 미래

오늘날의 초연결 세계에서 미디어 시스템은 여론을 형성하고 결과적으로 민주적 의사 결정에 중추적인 역할을 합니다. 의사소통의 정치경제학에 대한 심오한 분석에서 학자인 Robert McChesney는 기존의 통념에 도전하고 그가 미디어에 대한 "다섯 가지 진실"이라고 부르는 것을 제시합니다.

지구를 구하고 돈을 버는 방법

지구를 구하고 돈을 버는 방법

페트병, 유리병, 알루미늄캔, 그린에너지 패키지를 무심코 버린 적이 몇 번이나 되셨나요? 재활용에 대한 대가로 무언가를 얻을 수 있기를 몇 번이나 바랐습니까? 당신이 대부분의 사람들과 같다면 대답은 아마도 여러 번일 것입니다. 재활용은 종종 번거로움, 자질구레한 일 또는 즉각적이거나 실질적인 혜택을 가져오지 않는 의무로 간주됩니다.

카우보이의 거짓말

거대 기업이 미국인에게 강력한 거짓을 판매하는 방법

카우보이의 거짓말

햇빛의 첫 번째 광선이 평원의 서리가 내린 풀을 비추는 서쪽 언덕의 눈부신 황금빛 아침입니다. 온화하고 거대한 새까만 앵거스 소 떼가 일출을 배경으로 윤곽을 그리며 다져진 길을 따라 모두가 잘 아는 지역으로 향합니다. 조식 바.

기다림의 계절에 할 수 있는 것(기술 분야에서 첫 직장을 얻기 위해 기다림)

기다림의 계절에 할 수 있는 것(기술 분야에서 첫 직장을 얻기 위해 기다림)

새로운 직업으로 전환하는 것은 혼자서 하려고 한다면 매우 어려울 수 있습니다. 귀하와 동일한 학습 수준에 있고 유사한 목표, 끈기 및 추진력을 공유하는 책임 파트너를 찾는 것이 중요합니다.