การจัดการการพึ่งพา

ฟังก์ชันได้รับอนุญาตให้ใช้โมดูล Node.js ภายนอกเช่นเดียวกับข้อมูลในเครื่อง การพึ่งพาใน Node.js ได้รับการจัดการด้วย npm และแสดงในไฟล์ข้อมูลเมตาชื่อ package.json รันไทม์ของ Cloud Functions Node.js โดยทั่วไปรองรับการติดตั้งโดยใช้ npm หรือ yarn

หากต้องการระบุการพึ่งพาสำหรับฟังก์ชันของคุณ ให้เพิ่มลงในไฟล์ package.json ของคุณ

ในตัวอย่างนี้ การพึ่งพาจะแสดงอยู่ในไฟล์ package.json :

{
  "dependencies": {
    "escape-html": "^1.0.3"
  }
}

การพึ่งพาจะถูกนำเข้าในฟังก์ชัน:

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')}!`);
}

รวมถึงโมดูล Node.js ในพื้นที่

คุณยังสามารถรวมโมดูล Node.js ในเครื่องเป็นส่วนหนึ่งของฟังก์ชันของคุณได้ คุณสามารถทำได้โดยประกาศโมดูลของคุณใน package.json โดยใช้ file: prefix ในตัวอย่างต่อไปนี้ mymodule อ้างถึงชื่อโมดูลของคุณและ mymoduledir คือไดเร็กทอรีที่มีโมดูลของคุณ:

{
  "dependencies": {
    "mymodule": "file:mymoduledir"
  }
}

โค้ดสำหรับโมดูลโลคัลนี้ควรเก็บไว้ที่อื่นที่ไม่ใช่โฟลเดอร์ node_modules ภายในไดเร็กทอรีรากของฟังก์ชันของคุณ

ขั้นตอนเพิ่มเติมสำหรับ TypeScript

TypeScript ช่วยคุณได้มากที่สุดเมื่อคุณใช้ไลบรารีที่มีข้อมูลประเภท ซึ่งช่วยให้ TypeScript ตรวจจับข้อผิดพลาดทางไวยากรณ์ และช่วยให้ผู้แก้ไขสามารถให้คำแนะนำการเติมข้อความอัตโนมัติได้ดียิ่งขึ้น ไลบรารีบางตัว เช่น firebase-admin และ firebase-functions มาพร้อมกับคำจำกัดความของ TypeScript

ไลบรารีจำนวนมากไม่ได้ให้คำจำกัดความของ TypeScript ของตนเอง โปรเจ็กต์ SuretyTyped ให้คำจำกัดความที่ดูแลโดยชุมชนสำหรับโหนดไลบรารียอดนิยม SureTyped เผยแพร่คำจำกัดความเหล่านี้ภายใต้ชื่อแพ็คเกจ NPM เดียวกัน แต่อยู่ในองค์กร "@types" ตัวอย่างเช่น คุณสามารถติดตั้งข้อมูลชนิดสำหรับไลบรารี uuid ด้วยสิ่งต่อไปนี้:

npm install @types/uuid

เมื่อคุณคุ้นเคยกับ TypeScript มากขึ้น คุณอาจพบว่าตัวเองรวมการติดตั้งทั้งสองเข้าด้วยกัน:

npm install uuid @types/uuid

การพึ่งพาประเภทควรเป็นประเภทเดียวกับการขึ้นต่อกันของไลบรารี ตัวอย่างเช่น คุณไม่ควรบันทึก uuid เป็นการพึ่งพาปกติ และ @types/uuid เป็นการพึ่งพา dev หรือการพึ่งพาเพียร์

กำลังโหลดโมดูล Node.js

ใช้ฟังก์ชัน Node.js require() เพื่อโหลดโมดูล Node.js ที่คุณติดตั้งไว้ คุณยังสามารถใช้ฟังก์ชัน require() เพื่อนำเข้าไฟล์ในเครื่องที่คุณปรับใช้ควบคู่ไปกับฟังก์ชันของคุณได้

หากคุณกำลังเขียนฟังก์ชันใน TypeScript ให้ใช้คำสั่ง import ในลักษณะเดียวกันเพื่อโหลดโมดูล Node.js ที่คุณติดตั้งไว้

การใช้โมดูลส่วนตัว

คุณสามารถใช้ โมดูล npm ส่วนตัว โดยกำหนดการตั้งค่าสำหรับการพิสูจน์ตัวตนกับรีจิสทรีในไฟล์ . .npmrc ในไดเร็กทอรีของฟังก์ชัน

โมดูลส่วนตัวจาก Artifact Registry

ที่ เก็บแพ็กเกจ Artifact Registry Node.js สามารถโฮสต์โมดูลส่วนตัวสำหรับฟังก์ชันของคุณได้ เมื่อปรับใช้กับ Cloud Functions กระบวนการสร้างจะสร้างข้อมูลรับรอง Artifact Registry สำหรับ บัญชีบริการ Cloud Build โดย อัตโนมัติ คุณต้องแสดงรายการที่เก็บ Artifact Registry ใน . .npmrc ของคุณโดยไม่ต้องสร้างหนังสือรับรองเพิ่มเติม ตัวอย่างเช่น:

@SCOPE:registry=https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
//REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME:always-auth=true

โมดูลส่วนตัวจากที่เก็บอื่น

เอกสาร npm อธิบายวิธีสร้างโทเค็นการเข้าถึงแบบอ่านอย่างเดียวที่กำหนดเอง เราไม่แนะนำให้ใช้ไฟล์ .npmrc ที่สร้างในโฮมไดเร็กทอรีเนื่องจากมีโทเค็นการอ่าน-เขียน ไม่จำเป็นต้องมีสิทธิ์เขียนในระหว่างการปรับใช้ และอาจก่อให้เกิดความเสี่ยงด้านความปลอดภัย

อย่ารวมไฟล์ .npmrc หากคุณไม่ได้ใช้ที่เก็บส่วนตัว เนื่องจากจะช่วยเพิ่มเวลาในการปรับใช้สำหรับฟังก์ชันของคุณได้

รูปแบบไฟล์

หากคุณกำลังใช้ไฟล์ .npmrc เพื่อตั้งค่าโทเค็นการตรวจสอบสิทธิ์แบบกำหนดเอง ไฟล์ดังกล่าวควรมีบรรทัดที่แสดงด้านล่าง แทนที่ <YOUR_AUTH_TOKEN> ด้วยโทเค็นการพิสูจน์ตัวตนที่ NPM ให้มา

//registry.npmjs.org/:_authToken=<YOUR_AUTH_TOKEN>