Gunakan ID build yang konsisten dan berbasis git untuk aplikasi selanjutnya.js Anda
Paket kecil untuk menghasilkan ID build yang konsisten dan berbasis git untuk aplikasi Next.js Anda saat menjalankan next build di setiap server dalam penyebaran multi-server.
Modul ini mengekspor fungsi yang dapat Anda gunakan sebagai opsi konfigurasi GenerateBuildId Anda di next.config.js.
Secara default, ia akan menggunakan hash komit git terbaru dari repositori git lokal (setara dengan git rev-parse HEAD ):
// next.config.js
const nextBuildId = require ( 'next-build-id' )
module . exports = {
generateBuildId : ( ) => nextBuildId ( { dir : __dirname } )
}
// => 'f9fc968afa249d162c924a8d5b4ce6562c164c2e' Jika Anda lebih suka menggunakan ID build relatif terhadap tag terbaru dalam repo git Anda, lulus describe: true sebagai opsi dan output dari git describe --tags akan digunakan sebagai gantinya:
// next.config.js
const nextBuildId = require ( 'next-build-id' )
module . exports = {
generateBuildId : ( ) => nextBuildId ( { dir : __dirname , describe : true } )
}
// => 'v1.0.0' (no changes since v1.0.0 tag)
// => 'v1.0.0-19-ga8f7eee' (19 changes since v1.0.0 tag) Modul ini juga memperlihatkan versi sinkron untuk kebutuhan khusus, misalnya melewati ID build langsung ke konfigurasi penjaga. Panggil saja nextBuildId.sync({ dir: __dirname }) sebagai gantinya.
Jika Anda menjalankan beberapa contoh aplikasi Anda yang duduk di belakang penyeimbang beban tanpa afinitas sesi (dan Anda sedang membangun aplikasi Anda langsung di setiap server produksi alih-alih pra-pengemasannya), alat seperti ini diperlukan untuk menghindari kesalahan selanjutnya.js seperti "hash file build yang tidak valid", yang terjadi ketika klien yang sama (kode browser) berbicara dengan beberapa server server (server simpul) yang berbeda yang memiliki ID yang berbeda.
Build ID yang digunakan oleh aplikasi Anda disimpan pada sistem file dalam file teks BUILD_ID di direktori build Anda, yaitu .next secara default.
$ npm i next-build-id Modul ini mengekspor dua fungsi, satu yang asinkron ( nextBuildId() ekspor primer) dan satu yang sinkron ( nextBuildId.sync() ). Kedua fungsi menerima objek opsi tunggal, mendukung opsi yang sama yang tercantum di bawah ini. Kedua fungsi mengembalikan (atau menyelesaikan ke) string, mewakili ID build berbasis git.
Opsi yang didukung adalah:
dir (String, Default process.cwd() ): Direktori dalam repositori Git lokal
Menggunakan __dirname dari modul Next.config.js Anda umumnya aman. Nilai default diasumsikan sebagai direktori dari mana Anda menjalankan perintah next build , tetapi ini mungkin tidak benar berdasarkan bagaimana Anda membangun aplikasi selanjutnya.js Anda.
describe (boolean, default false ): Gunakan deskripsi tag git alih -alih komit terbaru sha
Tentukan ini sebagai true untuk menggunakan git describe --tags alih-alih git rev-parse HEAD untuk menghasilkan id build. Jika tidak ada tag di repositori git lokal Anda, komit terbaru SHA akan digunakan sebagai gantinya, kecuali jika Anda juga menentukan fallbackToSha: false .
fallbackToSha (boolean, default true ): Fallback ke commit commit terbaru saat describe: true dan tidak ada tag yang ada
Hanya berlaku saat menggunakan describe: true . Jika Anda ingin bersikap ketat tentang membutuhkan penggunaan (dan keberadaan) tag, maka nonaktifkan ini dengan fallbackToSha: false , dalam hal ini kesalahan akan dilemparkan jika tidak ada tag.
Perhatikan bahwa modul ini benar -benar menyediakan cara umum untuk mendapatkan ID atau string status untuk repositori git lokal, artinya tidak secara langsung terikat ke Next.js dengan cara apa pun - itu hanya tergantung pada bagaimana Anda menggunakannya.
ISC © Andrew Goode