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.node
dapat 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.node
harus kompatibel dengan runtime yang ditentukan diapp.yaml
- Dokumentasi tambahan tentang opsi konfigurasi
engines.node
dipackage.json
dapat ditemukan di dokumentasi NPM resmi pada topik engine - Saat men-deploy fungsi ke Cloud Functions, properti
engines.node
harus kompatibel dengan runtime yang digunakan untuk men-deploy fungsi Anda
Menginstal dependensi
Menggunakan NPM
- NPM adalah pengelola paket default.
- Jika memungkinkan, gunakan
package-lock.json
untuk meningkatkan performa cache. - Secara default, hanya dependensi produksi yang diinstal.
- Anda dapat menentukan bagian versi npm menggunakan kolom
engines.npm
di filepackage.json
.
Menggunakan Yarn
- Yarn akan digunakan saat Anda menyertakan file
yarn.lock
dalam project. - Anda dapat menentukan versi yarn yang akan digunakan di kolom
engines.yarn
pada 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.yaml
dalam project Anda. - Anda dapat menentukan versi pnpm di kolom
engines.pnpm
pada 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
Replace:
- 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 perintahnpm
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.
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,build
menjalankannpm run lint
, lalunpm run build
.GOOGLE_NODE_RUN_SCRIPTS=
tidak menjalankan skrip.