Menentukan dependensi di Node.js
Fungsi diizinkan untuk menggunakan modul Node.js eksternal serta data lokal. Dependensi pada Node.js dikelola dengan npm dan dinyatakan dalam file metadata bernama package.json
. Fungsi Cloud Run
Runtime Node.js mendukung penginstalan menggunakan npm,
yarn, atau pnpm.
Untuk menentukan dependensi bagi fungsi Anda, tambahkan dependensi tersebut ke file package.json
.
Dalam contoh ini, dependensi tercantum dalam file package.json
:
{ "dependencies": { "escape-html": "^1.0.3" } }
Kemudian, dependensi tersebut akan diimpor dalam fungsi:
Functions Framework adalah dependensi wajib untuk semua fungsi. Meskipun fungsi Cloud Run menginstalnya atas nama Anda saat fungsi dibuat, sebaiknya Anda menyertakannya sebagai dependensi eksplisit agar lebih jelas.
Jika fungsi Anda bergantung pada dependensi pribadi, sebaiknya
mencerminkan functions-framework
ke registry pribadi Anda. Sertakan functions-framework
yang diduplikasi sebagai dependensi ke fungsi Anda untuk menghindari penginstalan
paket dari internet publik.
Menggunakan npm
untuk menginstal modul Node.js secara lokal
Cara termudah untuk menginstal modul Node.js secara lokal adalah dengan menggunakan npm install
di folder yang berisi fungsi Anda. Misalnya, perintah berikut akan menambahkan modul uuid
:
npm install uuid
Perintah ini menggabungkan dua langkah:
- Menandai versi terbaru dari modul sebagai dependensi dalam file
package.json
Anda. Hal ini sangat penting: Hanya fungsi Cloud Run menginstal modul yang dideklarasikan dalam filepackage.json
Anda. - Mendownload modul ke direktori
node_modules
Anda. Dengan langkah ini, Anda dapat menggunakan modul tersebut saat melakukan pengembangan secara lokal.
Jika belum menginstal npm di mesin Anda, dapatkan npm.
Mengonfigurasi dependensi deployment
Anda dapat menginstal dependensi produksi untuk NPM, Yarn, atau Pnpm:
NPM
Saat Anda men-deploy fungsi, fungsi Cloud Run menginstal dependensi
yang dideklarasikan dalam file package.json
menggunakan
Perintah npm install
:
npm install --production
Yarn
Di runtime Node.js 8 dan yang lebih tinggi, jika ada file yarn.lock
,
Sebagai gantinya, fungsi Cloud Run menggunakan
Perintah yarn install
:
yarn install --production
Pnpm
Di runtime Node.js 8 dan yang lebih tinggi, jika ada file pnpm-lock.yaml
,
Sebagai gantinya, fungsi Cloud Run menggunakan
Perintah pnpm install
:
pnpm install
Menjalankan langkah-langkah build kustom selama deployment
Setelah men-deploy, Anda dapat melakukan langkah build kustom selama proses build fungsi dengan menambahkan skrip gcp-build
dalam file package.json
.
Saat skrip ini dijalankan, dependensi di kolom dependencies
dan
devDependencies
dari file package.json
Anda akan tersedia. Sesudah
mengeksekusi langkah build kustom, fungsi Cloud Run menghapus dan
membuat ulang folder node_modules
hanya dengan menginstal produksi
dependensi yang dideklarasikan di kolom dependencies
dari file package.json
Anda.
Jika tidak ada skrip gcp-build
di package.json
, fungsi Cloud Run
hanya menginstal
dependensi produksi.
Menggunakan paket sistem
Runtime Node.js juga menyertakan sejumlah paket sistem di lingkungan eksekusi. Jika fungsi Anda menggunakan dependensi yang memerlukan paket yang tidak tercantum, Anda dapat meminta paket.
Menyertakan modul Node.js lokal
Anda juga dapat menyertakan modul Node.js lokal sebagai bagian dari fungsi Anda. Caranya, deklarasikan modul Anda di package.json
menggunakan awalan file:
. Dalam contoh berikut, mymodule
merujuk ke nama modul Anda dan mymoduledir
adalah direktori yang berisi modul Anda:
{ "dependencies": { "mymodule": "file:mymoduledir" } }
Kode untuk modul lokal ini tidak boleh disimpan di folder node_modules
dalam direktori root fungsi Anda.
Memuat modul Node.js
Gunakan fungsi require()
Node.js untuk memuat modul Node.js mana pun yang telah diinstal. Anda juga dapat menggunakan fungsi require()
untuk mengimpor file lokal yang di-deploy bersama fungsi Anda.
Menggunakan modul pribadi
Anda dapat menggunakan modul npm pribadi dengan menyediakan setelan untuk mengautentikasi dengan registry dalam .npmrc
file di direktori fungsi. Jika Anda menggunakan
Yarn v2 atau yang lebih baru sebagai pengelola paket, file ini akan diberi nama
.yarnrc.yml
.
Modul pribadi dari Artifact Registry
Repositori paket Node.js Artifact Registry dapat menghosting modul pribadi untuk fungsi Anda. Saat Anda men-deploy fungsi Cloud Run
fungsi otomatis, proses build akan otomatis menghasilkan kredensial Artifact Registry.
untuk akun layanan Cloud Build.
Anda hanya perlu mencantumkan repositori Artifact Registry di .npmrc
tanpa membuat kredensial tambahan. Contoh:
@SCOPE:registry=https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
//REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME:always-auth=true
Pendekatan ini juga berfungsi untuk pengelola paket Yarn v1.
Jika Anda menggunakan Yarn v2 atau yang lebih baru, Anda hanya perlu mencantumkan repositori Artifact Registry di .yarnrc.yml
tanpa kredensial tambahan.
Contoh:
npmScopes:
SCOPE:
npmRegistryServer: https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
npmAlwaysAuth: true
Modul pribadi dari repositori lain
Dokumentasi npm menjelaskan cara membuat token akses hanya baca kustom. Sebaiknya jangan gunakan file .npmrc
yang dibuat di direktori home karena file tersebut berisi token baca-tulis. Izin operasi tulis tidak diperlukan selama deployment, dan dapat menimbulkan risiko keamanan.
Jangan sertakan file .npmrc
jika Anda tidak menggunakan repositori pribadi,
karena dapat memperlama waktu deployment untuk fungsi Anda.
Format file
Jika Anda menggunakan file .npmrc
untuk menetapkan token autentikasi kustom, file tersebut harus menyertakan baris yang ditampilkan di bawah.
//REGISTRY_DOMAIN/:_authToken=AUTH_TOKEN
Replace:
- REGISTRY_DOMAIN: nama domain registry npm pribadi Anda. Jika repositori Anda dihosting dengan
npmjs.org
, tetapkan kolom ini keregistry.npmjs.org
. AUTH_TOKEN: token otorisasi untuk registry npm Anda. Token ini dapat berupa nilai teks literal dari token atau string teks
${NPM_TOKEN}
, yang diganti dengannpm
dengan nilai token sebenarnya dari lingkungan.Anda dapat menetapkan variabel lingkungan
$NPM_TOKEN
dengan argumen--set-build-env-vars
ke perintahgcloud functions deploy
. Lihat tutorial NPM tentang modul pribadi untuk mengetahui detail lebih lanjut tentang token autentikasi NPM.
Membangun fungsi dengan dependensi vendor
Dependensi vendor adalah dependensi yang sumbernya disertakan secara langsung dalam paket kode sumber Anda dan dibuat ulang bersama kode Anda sendiri. Anda membuat dependensi Node.js vendor dan melewati penginstalannya selama deployment menggunakan Variabel lingkungan build GOOGLE_VENDOR_NPM_DEPENDENCIES.
Prasyarat untuk dependensi vendor
Pastikan Anda memiliki fungsi yang berfungsi dengan semua dependensi yang ingin Anda tentukan oleh vendor dalam file
package.json
.Instal dependensi ini secara lokal dengan menjalankan:
npm install
Hapus
node_modules
dari file .gcloudignore di direktori kerja Anda.Deploy fungsi, dan pastikan versi Node.js lokal Anda sama dengan yang Anda tentukan selama deployment.
Deploy fungsi Anda dan dependensi vendor Anda dengan perintah berikut:
gcloud functions deploy FUNCTION_NAME \ --runtime RUNTIME_NAME \ --set-build-env-vars GOOGLE_VENDOR_NPM_DEPENDENCIES=true
Ganti:
- FUNCTION_NAME: nama fungsi fungsi Cloud Run Anda men-deploy
- RUNTIME_NAME: nama runtime Node.js untuk menjalankan fungsi yang di-deploy. ID ini harus sama Versi Node.js yang telah Anda gunakan dalam pengembangan lokal lingkungan
Paket framework Functions adalah dependensi yang diperlukan untuk fungsi. Untuk build yang lebih cepat, kami merekomendasikan agar Anda menggunakan paket ini. Jika tidak, Anda didownload dan diinstal saat fungsi Anda dibangun.
Jika Anda menetapkan mesin npm di file package.json, proses versi npm didownload pada waktu build. Untuk menyembunyikan perilaku ini, hapus dari file package.json Anda.