Tindakan ini menyediakan fungsionalitas berikut untuk pengguna GitHub Actions:
Secara opsional mengunduh dan menyimpan cache distribusi versi Node.js yang diminta, dan menambahkannya ke PATH
Secara opsional menyimpan dependensi npm/yarn/pnpm
Mendaftarkan pencocokan masalah untuk keluaran kesalahan
Mengonfigurasi otentikasi untuk GPR atau npm
Lihat action.yml
- menggunakan: tindakan/setup-node@v4 dengan:# Spesifikasi Versi dari versi yang akan digunakan dalam notasi SemVer.# Ia juga menerima alias seperti lts/*, terbaru, nightly dan canary build# Contoh: 12.x, 10.15.1, >=10.15.0, lts/ Hidrogen, 16-malam, terbaru, versi nodenode: ''# File berisi versi Spesifikasi versi yang akan digunakan. Contoh: package.json, .nvmrc, .node-version, .tool-versions.# Jika node-version dan node-version-file disediakan, tindakan akan menggunakan versi dari node-version. node-version-file: ''# Atur opsi ini jika Anda ingin tindakan memeriksa versi terbaru yang tersedia # yang memenuhi spesifikasi versi.# Ini hanya akan berpengaruh pada versi Nodejs lts (12.x, >=10.15. 0, lts/Hidrogen). # Default: falsecheck-latest: false# Arsitektur target untuk digunakan Node. Contoh: x86, x64. Akan menggunakan arsitektur sistem secara default.# Default: ''. Tindakan ini menggunakan arsitektur sistem secara default: ''# Digunakan untuk menarik distribusi node dari https://github.com/actions/node-versions. # Karena ada default, ini biasanya tidak disediakan oleh pengguna. # Saat menjalankan tindakan ini di github.com, nilai default sudah cukup. # Saat menjalankan GHES, Anda dapat memberikan token akses pribadi untuk github.com jika Anda mengalami pembatasan tarif.## Kami merekomendasikan penggunaan akun layanan dengan izin paling sedikit yang diperlukan. Juga# saat membuat PAT baru, pilih cakupan yang paling sedikit diperlukan.## [Pelajari lebih lanjut tentang membuat dan menggunakan rahasia terenkripsi](https://help.github.com/en/actions/automating-your-workflow-with-github -actions/creating-and-using-encrypted-secrets)## Default: ${{ github.server_url == 'https://github.com' && github.token || '' }}token: ''# Digunakan untuk menentukan manajer paket untuk cache di direktori default. Nilai yang didukung: npm, benang, pnpm.# Manajer paket harus sudah diinstal sebelumnya# Default: ''cache: ''# Digunakan untuk menentukan jalur ke file ketergantungan: package-lock.json, benang.lock, dll. # Ini akan menghasilkan hash dari file target untuk kunci utama. Ini hanya berfungsi jika cache ditentukan. # Mendukung wildcard atau daftar nama file untuk menyimpan beberapa dependensi. # Default: ''cache-dependency-path: ''# Registri opsional untuk diatur untuk autentikasi. Akan mengatur registri dalam file .npmrc dan .yarnrc tingkat proyek, # dan mengatur auth untuk membaca dari env.NODE_AUTH_TOKEN.# Default: ''registry-url: ''# Cakupan opsional untuk mengautentikasi terhadap registri yang dicakup. # Akan kembali ke pemilik repositori saat menggunakan registri Paket GitHub (https://npm.pkg.github.com/).# Default: ''scope: ''# Tetapkan opsi selalu-auth di file npmrc.# Default : ''selalu-auth: ''
Dasar:
tangga: - penggunaan: tindakan/checkout@v4- penggunaan: tindakan/setup-node@v4 dengan: versi simpul: 18- jalankan: npm ci- jalankan: tes npm
Input node-version
bersifat opsional. Jika tidak disediakan, versi node dari PATH akan digunakan. Namun, disarankan untuk selalu menentukan versi Node.js dan tidak bergantung pada versi sistem.
Tindakan ini pertama-tama akan memeriksa cache lokal untuk kecocokan semver. Jika tidak dapat menemukan versi tertentu dalam cache, tindakan akan mencoba mengunduh versi Node.js. Ini akan menarik versi LTS dari rilis versi node dan jika salah atau gagal akan kembali ke perilaku sebelumnya yaitu mengunduh langsung dari dist node.
Untuk informasi mengenai versi Node.js yang di-cache secara lokal pada runner yang dihosting GitHub, lihat Gambar GitHub Actions Runner.
Input node-version
mendukung Spesifikasi Versi Semantik, untuk contoh lebih detail silakan lihat dokumentasi paket semver.
Contoh:
Versi utama: 18
, 20
Versi yang lebih spesifik: 10.15
, 16.15.1
, 18.4.0
Sintaks NVM LTS: lts/erbium
, lts/fermium
, lts/*
, lts/-n
Rilis terbaru: *
atau latest
current
node
Catatan: Seperti nilai lainnya, *
akan mendapatkan versi Node.js terbaru yang di-cache secara lokal, atau versi terbaru dari tindakan/versi node, bergantung pada input check-latest
.
node
current
/ latest
/ selalu menyelesaikan ke versi dist terbaru. Versi tersebut kemudian diunduh dari action/node-versions jika memungkinkan, atau langsung dari Node.js jika tidak. Karena tidak selalu di-cache, ada kemungkinan mencapai batas kecepatan saat mengunduh dari dist
Selalu disarankan untuk mengkomit lockfile manajer paket Anda untuk alasan keamanan dan kinerja. Untuk informasi lebih lanjut, lihat bagian "Bekerja dengan file kunci" pada panduan penggunaan tingkat lanjut.
Tindakan ini memiliki fungsionalitas bawaan untuk menyimpan cache dan memulihkan dependensi. Ia menggunakan tindakan/cache di balik terpal untuk menyimpan data paket global tetapi memerlukan lebih sedikit pengaturan konfigurasi. Manajer paket yang didukung adalah npm
, yarn
, pnpm
(v6.10+). Input cache
bersifat opsional, dan cache dinonaktifkan secara default.
Tindakan defaultnya adalah mencari file ketergantungan ( package-lock.json
, npm-shrinkwrap.json
atau yarn.lock
) di root repositori, dan menggunakan hash-nya sebagai bagian dari kunci cache. Gunakan cache-dependency-path
untuk kasus ketika beberapa file ketergantungan digunakan, atau file tersebut terletak di subdirektori berbeda.
Catatan: Tindakan ini tidak melakukan cache node_modules
Lihat contoh penggunaan cache untuk input yarn
/ pnpm
dan cache-dependency-path
di Panduan penggunaan tingkat lanjut.
Menyimpan dependensi npm dalam cache:
tangga: - penggunaan: tindakan/checkout@v4- penggunaan: tindakan/setup-node@v4 dengan: versi simpul: 20cache: 'npm'- jalankan: npm ci- jalankan: npm test
Menyimpan dependensi npm di monorepos:
tangga: - penggunaan: tindakan/checkout@v4- penggunaan: tindakan/setup-node@v4 dengan:node-version: 20cache: 'npm'cache-dependency-path: subdir/package-lock.json- jalankan: npm ci- jalankan: npm test
pekerjaan: build:runs-on: ubuntu-lateststrategy: matriks:node: [ 14, 16, 18 ]nama: Node ${{ matriks.node }} langkah-langkah contoh: - penggunaan: action/checkout@v4 - nama: Setup nodeuses: action/setup-node@v4with: node-version: ${{ Matrix.node }} - jalankan: npm ci - jalankan: npm test
setup-node
di GHES setup-node
sudah diinstal sebelumnya pada alat dengan GHES jika Tindakan diaktifkan. Saat mengunduh distribusi Nodejs secara dinamis, setup-node
mengunduh distribusi dari actions/node-versions
di github.com (di luar alat). Ajakan actions/node-versions
ini dilakukan melalui permintaan yang tidak diautentikasi, yang dibatasi hingga 60 permintaan per jam per IP. Jika lebih banyak permintaan dibuat dalam jangka waktu tersebut, maka Anda akan mulai melihat kesalahan batas kecepatan selama pengunduhan yang terlihat seperti: ##[error]API rate limit exceeded for...
. Setelah kesalahan itu, tindakan akan mencoba mengunduh versi langsung dari situs resminya, tetapi versi tersebut juga dapat memiliki batas kecepatan jadi lebih baik untuk memasukkan token.
Untuk mendapatkan batas tarif yang lebih tinggi, Anda dapat membuat token akses pribadi di github.com dan meneruskannya sebagai masukan token
untuk tindakan:
penggunaan: tindakan/setup-node@v4dengan: token: ${{ rahasia.GH_DOTCOM_TOKEN }} versi simpul: 20
Jika pelari tidak dapat mengakses github.com, versi Nodejs apa pun yang diminta selama alur kerja dijalankan harus berasal dari cache alat pelari. Lihat "Menyiapkan cache alat pada pelari yang dihosting sendiri tanpa akses internet" untuk informasi lebih lanjut.
Periksa versi terbaru
Menggunakan file versi simpul
Menggunakan arsitektur yang berbeda
Menggunakan versi canary v8
Menggunakan versi malam
Menggunakan versi rc
Data paket cache
Menggunakan beberapa sistem operasi dan arsitektur
Menerbitkan ke npmjs dan GPR dengan npm
Menerbitkan ke npmjs dan GPR dengan benang
Menggunakan paket pribadi
Skrip dan dokumentasi dalam proyek ini dirilis di bawah Lisensi MIT
Kontribusi dipersilahkan! Lihat Panduan Kontributor
Bersikaplah baik. Lihat kode etik kami