package.json
adlı bir meta veri dosyasında ifade edilir. Cloud Functions Node.js çalışma zamanları genellikle npm veya iplik kullanarak yüklemeyi destekler. İşlevinize bir bağımlılık belirtmek için bunu package.json
dosyanıza ekleyin.
Bu örnekte, package.json
dosyasında bir bağımlılık listelenmiştir:
{ "dependencies": { "escape-html": "^1.0.3" } }
Bağımlılık daha sonra işleve aktarılır:
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')}!`);
});
TypeScript
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')}!`);
}
Dağıtım paketinizin bir parçası olarak yerel Node.js modüllerini dahil etme
İşlevinizin bir parçası olarak yerel Node.js modüllerini de dahil edebilirsiniz. Bunu, modülünüzü package.json
içinde file:
prefix kullanarak bildirerek başarabilirsiniz. Aşağıdaki örnekte, mymodule
, modül adınızı ifade eder ve mymoduledir
, modülünüzü içeren dizindir:
{ "dependencies": { "mymodule": "file:mymoduledir" } }
Bu yerel modülün kodu, işlevinizin kök dizini içindeki node_modules
klasöründen başka bir yerde saklanmalıdır.
Node.js modüllerini yerel olarak yüklemek için npm
kullanma
Yerel olarak bir Node.js modülü kurmanın en kolay yolu, Bulut İşlevinizi içeren klasörde npm install
komutunu kullanmaktır. Örneğin, aşağıdaki komut uuid
modülünü ekler:
npm install uuid
Bu, iki adımı birleştirir:
- Modülün en son sürümünü
package.json
dosyanızda bir bağımlılık olarak işaretler. Bu çok önemlidir: Cloud Functions, yalnızcapackage.json
dosyanızda belirtilen modülleri yükler. - Modülü
node_modules
dizininizenode_modules
. Bu, modülü yerel olarak geliştirirken kullanmanıza izin verir.
Makinenizde npm kurulu değilse, npm alın .
TypeScript için ek adımlar
TypeScript, tür bilgilerine sahip kitaplıkları kullandığınızda size en çok yardımcı olur. Bu, TypeScript'in sözdizimi hatalarını yakalamasına ve editörlerin size daha iyi otomatik tamamlama önerileri vermesine olanak tanır. firebase-admin
ve firebase-functions
gibi bazı kitaplıklar TypeScript tanımlarıyla birlikte gönderilir.
Çoğu kitaplık kendi TypeScript tanımını sağlamaz. DefinitelyTyped projesi, en popüler düğüm kitaplıkları için topluluk tarafından sürdürülen tanımlar sağlar. DefinitelyTyped, bu tanımları aynı NPM paket adı altında ancak "@types" organizasyonu içinde yayınlar. Örneğin, uuid
kitaplığı için tür bilgilerini aşağıdakilerle kurabilirsiniz:
npm install @types/uuid
TypeScript'e aşina oldukça, kendinizi her iki kurulumu birleştirirken bulabilirsiniz:
npm install uuid @types/uuid
Tür bağımlılıkları, kitaplık bağımlılığıyla aynı türden olmalıdır. Örneğin, uuid
normal bir bağımlılık ve @types/uuid
bir dev bağımlılığı veya eş bağımlılığı olarak kaydetmemelisiniz.
Node.js modüllerini yükleme
Yüklediğiniz herhangi bir Node.js modülünü yüklemek için Node.js require()
işlevini kullanın. Ayrıca, işlevinizin yanında yerleştirdiğiniz yerel dosyaları içe aktarmak için require()
işlevini de kullanabilirsiniz.
import
deyimini aynı şekilde kullanın.Özel modülleri kullanma
Özel bir npm modülünü kullanmak için, işlevin dizininde bulunan bir .npmrc
dosyasında npm kayıt defteri için kimlik bilgileri (kimlik belirteci) sağlamanız gerekir. Npm belgeleri , özel salt okunur erişim belirteçlerinin nasıl oluşturulacağını açıklar. Bir okuma-yazma belirteci içerdiğinden, ana dizinde oluşturulan .npmrc
dosyasını kullanmaktan vazgeçiriyoruz. Dağıtım sırasında yazma izinleri gerekli değildir ve güvenlik riski oluşturabilir.
Özel depolar kullanmıyorsanız .npmrc
dosyasını eklemeyin, çünkü bu, işlevlerinizin dağıtım süresini .npmrc
.
Dosya formatı
Özel bir kimlik doğrulama belirteci ayarlamak için bir .npmrc
dosyası kullanıyorsanız, aşağıda gösterilen satırı içermelidir. <YOUR_AUTH_TOKEN>
NPM tarafından sağlanan kimlik doğrulama jetonunuzla değiştirin.
//registry.npmjs.org/:_authToken=<YOUR_AUTH_TOKEN>