package.json
. Środowisko wykonawcze Cloud Functions Node.js zazwyczaj obsługuje instalację przy użyciu npm lub Yarn . Aby określić zależność dla swojej funkcji, dodaj ją do pliku package.json
.
W tym przykładzie zależność jest wymieniona w pliku package.json
:
{ "dependencies": { "escape-html": "^1.0.3" } }
Zależność jest następnie importowana w funkcji:
JavaScript
const escapeHtml = require('escape-html');
// Return a greeting with the input HTML-escaped.
exports.hello = functions.https.onRequest((req, res) => {
res.send(`Hello ${escapeHtml(req.query.name || req.body.name || 'World')}!`);
});
Maszynopis
import * as escapeHtml from 'escape-html';
// Return a greeting with the input HTML-escaped.
export let hello = functions.https.onRequest((req, res) => {
res.send(`Hello ${escapeHtml(req.query.name || req.body.name || 'World')}!`);
}
W tym lokalne moduły Node.js
Możesz także dołączyć lokalne moduły Node.js jako część swojej funkcji. Możesz to osiągnąć, deklarując swój moduł w package.json
za pomocą file:
prefix . W poniższym przykładzie mymodule
odnosi się do nazwy twojego modułu, a mymoduledir
to katalog zawierający twój moduł:
{ "dependencies": { "mymodule": "file:mymoduledir" } }
Kod tego modułu lokalnego powinien być przechowywany w innym miejscu niż folder node_modules
w katalogu głównym Twojej funkcji.
Dodatkowe kroki dla TypeScript
TypeScript pomaga najbardziej, gdy korzystasz z bibliotek zawierających informacje o typie. Dzięki temu TypeScript wyłapuje błędy składniowe, a redaktorom daje lepsze sugestie autouzupełniania. Niektóre biblioteki, takie jak firebase-admin
i firebase-functions
, są dostarczane z definicjami języka TypeScript.
Wiele bibliotek nie zapewnia własnej definicji języka TypeScript. Projekt ZdecydowanieTyped zapewnia obsługiwane przez społeczność definicje najpopularniejszych bibliotek węzłów. ZdecydowanieTyped publikuje te definicje pod tą samą nazwą pakietu NPM, ale wewnątrz organizacji „@types”. Na przykład można zainstalować informacje o typie biblioteki uuid
w następujący sposób:
npm install @types/uuid
W miarę poznawania języka TypeScript może się okazać, że połączysz obie instalacje:
npm install uuid @types/uuid
Zależności typu powinny być tego samego rodzaju co zależność biblioteki. Na przykład nie należy zapisywać uuid
jako normalnej zależności, a @types/uuid
jako zależności deweloperskiej lub zależności równorzędnej.
Ładowanie modułów Node.js
Użyj funkcji Node.js require()
, aby załadować dowolny zainstalowany moduł Node.js. Możesz także użyć funkcji require()
do importowania plików lokalnych, które wdrażasz wraz z funkcją.
import
w ten sam sposób, aby załadować dowolny zainstalowany moduł Node.js.Korzystanie z prywatnych modułów
Możesz użyć prywatnego modułu npm , podając ustawienia uwierzytelniania w rejestrze w pliku .npmrc
w katalogu funkcji.
Prywatne moduły z Artifact Registry
Repozytorium pakietów Artifact Registry Node.js może zawierać prywatne moduły dla Twojej funkcji. Podczas wdrażania w Cloud Functions proces kompilacji automatycznie wygeneruje poświadczenia Artifact Registry dla konta usługi Cloud Build . Wystarczy, że wymienisz repozytorium Artifact Registry w pliku .npmrc
bez generowania dodatkowych poświadczeń. Na przykład:
@SCOPE:registry=https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
//REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME:always-auth=true
Prywatne moduły z innych repozytoriów
Dokumentacja npm wyjaśnia, jak tworzyć niestandardowe tokeny dostępu tylko do odczytu. Odradzamy używanie pliku .npmrc
utworzonego w katalogu domowym, ponieważ zawiera on token do odczytu i zapisu. Uprawnienia do zapisu nie są wymagane podczas wdrażania i mogą stanowić zagrożenie dla bezpieczeństwa.
Nie dołączaj pliku .npmrc
, jeśli nie korzystasz z prywatnych repozytoriów, ponieważ może to wydłużyć czas wdrażania funkcji.
Format pliku
Jeśli używasz pliku .npmrc
do ustawienia niestandardowego tokenu uwierzytelniania, powinien on zawierać wiersz pokazany poniżej. Zastąp <YOUR_AUTH_TOKEN>
tokenem uwierzytelniającym dostarczonym przez NPM.
//registry.npmjs.org/:_authToken=<YOUR_AUTH_TOKEN>