Menentukan versi Node.js
Proyek buildpack menyediakan dukungan untuk rilis LTS Saat Ini dan Aktif dari Node.js. Rilis lama Node.js tersedia tetapi mungkin tidak dikelola secara aktif oleh project.
Menggunakan package.json
Anda dapat menentukan versi Node.js aplikasi selama deployment dengan mengonfigurasi kolom engines.node di package.json. Untuk mengonfigurasi buildpack agar menggunakan Node.js v16 versi terbaru saat men-deploy aplikasi, Anda dapat menggunakan nilai berikut di package.json:
"engines": {
"node": "16.x.x"
}
Menggunakan GOOGLE_NODEJS_VERSION
Anda juga dapat menentukan versi Node.js melalui variabel lingkungan GOOGLE_NODEJS_VERSION.
Jika kedua konfigurasi ditetapkan, nilai GOOGLE_NODEJS_VERSION akan lebih diprioritaskan
daripada properti engines.node. Jika tidak ada nilai yang diberikan, maka Node.js versi LTS terbaru akan digunakan
Untuk mengonfigurasi buildpack agar menggunakan Node.js 16 saat men-deploy aplikasi:
pack build --builder=gcr.io/buildpacks/builder \
sample-functions-framework-node \
--env GOOGLE_NODEJS_VERSION=16.x.x
Anda juga dapat menggunakan deskriptor project project.toml untuk mengenkode
variabel lingkungan bersama file project Anda. Lihat petunjuk cara
mem-build aplikasi dengan variabel lingkungan.
Tips
- Kolom
engines.nodedapat menggunakan batasan semver. Library khusus yang kami gunakan untuk buildpack Node.js adalah Masterminds/semver - Hindari penggunaan penentu yang lebih besar dari (>) di
engines.node - Saat men-deploy aplikasi ke lingkungan standar App Engine, properti
engines.nodeharus kompatibel dengan runtime yang ditentukan diapp.yaml - Dokumentasi tambahan tentang opsi konfigurasi
engines.nodedipackage.jsondapat ditemukan di dokumentasi NPM resmi pada topik engine - Saat men-deploy fungsi ke fungsi Cloud Run, properti
engines.nodeharus kompatibel dengan runtime yang digunakan untuk men-deploy fungsi Anda
Menginstal dependensi
Menggunakan NPM
- NPM adalah pengelola paket default.
- Jika memungkinkan, gunakan
package-lock.jsonuntuk meningkatkan performa cache. - Secara default, hanya dependensi produksi yang diinstal.
- Anda dapat menentukan bagian versi npm menggunakan kolom
engines.npmdi filepackage.json.
Menggunakan Yarn
- Yarn akan digunakan saat Anda menyertakan file
yarn.lockdalam project. - Anda dapat menentukan versi yarn yang akan digunakan di kolom
engines.yarnpada filepackage.json. - Kami mendukung mode Yarn2 PnP jika project Anda menyertakan
.yarn/cache.
Menggunakan Pnpm:
- Sebagai gantinya, Pnpm digunakan saat Anda menyertakan file
pnpm-lock.yamldalam project Anda. - Anda dapat menentukan versi pnpm di kolom
engines.pnpmpada filepackage.json. - Untuk contoh penggunaan, lihat aplikasi sample-node-pnpm.
Menggunakan modul pribadi
Anda dapat menggunakan modul npm pribadi dengan menyediakan setelan untuk mengautentikasi dengan registry dalam file .npmrc di direktori fungsi. Jika Anda menggunakan
Yarn versi 2 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 Buildpack, proses build akan otomatis menghasilkan kredensial Artifact Registry untuk akun layanan Cloud Build.
Anda hanya perlu mencantumkan repositori Artifact Registry dalam file .npmrc saat menggunakan NPM atau Yarn versi 1. Misalnya, saat menggunakan NPM atau Yarn versi 1:
@SCOPE:registry=https://REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME
//REGION_ID-npm.pkg.dev/PROJECT_ID/REPOSITORY_NAME:always-auth=true
Jika menggunakan Yarn versi 2 atau yang lebih baru, Anda hanya perlu mencantumkan repositori Artifact Registry di file .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 menyertakan 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
Ganti:
- REGISTRY_DOMAIN: nama domain registry npm pribadi Anda. Misalnya, jika host repositori Anda adalah
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 oleh perintahnpmdengan nilai token sebenarnya dari lingkungan.Anda dapat menetapkan variabel lingkungan
$NPM_TOKENdengan argumen--set-build-env-varske perintahgcloud functions deploy. Lihat tutorial NPM tentang modul pribadi untuk mengetahui detail lebih lanjut tentang token autentikasi NPM.
Menjalankan langkah-langkah build kustom selama deployment
Secara default, npm run build dijalankan jika Anda menentukan skrip dalam
file package.json. Namun, Anda dapat menentukan langkah-langkah build kustom untuk
mengganti perilaku default dan hanya menjalankan skrip yang diinginkan
selama build. Anda dapat mengontrol langkah-langkah build menggunakan variabel lingkungan GOOGLE_NODE_RUN_SCRIPTS atau gcp-build dalam file package.json.
Anda hanya dapat menggunakan satu metode. Perhatikan bahwa variabel lingkungan GOOGLE_NODE_RUN_SCRIPTS lebih diutamakan dan menggantikan apa pun yang ditentukan untuk gcp-build dalam package.json Anda.
Secara default, saat Anda mengonfigurasi langkah-langkah build kustom, dependencies dan
devDependencies dalam file package.json akan diinstal terlebih dahulu
sebelum skrip atau perintah dijalankan. Untuk mengganti perilaku default, Anda dapat menggunakan variabel lingkungan NODE_ENV.
Menggunakan GOOGLE_NODE_RUN_SCRIPTS
Anda dapat meneruskan variabel lingkungan GOOGLE_NODE_RUN_SCRIPTS ke build untuk mengontrol skrip yang dijalankan. Anda dapat menentukan satu atau beberapa skrip, atau meneruskan variabel lingkungan kosong untuk mencegah perilaku default berjalan, seperti GOOGLE_NODE_RUN_SCRIPTS=. Untuk mengetahui detail selengkapnya, lihat Variabel lingkungan.
Menggunakan package.json
Menambahkan gcp-build di file package.json hanya akan menjalankan
npm run gcp-build, yang berarti tindakan tersebut akan menggantikan perilaku
default. Anda dapat menentukan satu atau beberapa perintah, atau menentukan string kosong untuk mencegah perintah apa pun berjalan, seperti "gcp-build":"".
"scripts": {
...
"gcp-build": "npm run lint && npm run build"
...
}
Titik entri aplikasi
Buildpack Node.js akan menjalankan perintah yang ditentukan di kolom scripts.start pada package.json Anda.
Jika scripts.start tidak ditetapkan, buildpack akan menjalankan npm start.
Sebaiknya gunakan Procfile karena npm atau yarn akan dikeluarkan dari jalur.
Variabel lingkungan
Anda dapat menetapkan variabel lingkungan untuk mengonfigurasi build image container.
Buildpack Node.js mendukung variabel lingkungan berikut untuk menyesuaikan container Anda.
NPM_CONFIG_<key>
Lihat dokumentasi.
Contoh: NPM_CONFIG_FLAG=value meneruskan -flag=value ke perintah npm.
NODE_ENV
Menentukan lingkungan pengembangan selama proses build; disetel untuk npm install.
Contoh: NODE_ENV=development menginstal dependencies dan devDependencies yang ditentukan di package.json.
GOOGLE_NODE_RUN_SCRIPTS
Menentukan daftar skrip npm dari package.json yang akan dijalankan setelah menginstal dependensi. Daftar harus dipisahkan koma dan dijalankan sesuai urutan
pencantuman setiap skrip.
Saat Anda menentukan GOOGLE_NODE_RUN_SCRIPTS, hanya skrip yang Anda cantumkan yang akan dijalankan. Misalnya, jika Anda ingin mencegah npm run build default berjalan, tentukan variabel lingkungan tanpa nilai.
Contoh:
GOOGLE_NODE_RUN_SCRIPTS=lint,buildmenjalankannpm run lint, lalunpm run build.GOOGLE_NODE_RUN_SCRIPTS=tidak menjalankan skrip.