ใช้รหัสบิล
แพ็คเกจขนาดเล็กเพื่อสร้าง ID สร้างที่สอดคล้องกับ GIT สำหรับแอป Next.js ของคุณเมื่อเรียกใช้ next build บนเซิร์ฟเวอร์แต่ละเซิร์ฟเวอร์ในการปรับใช้หลายเซิร์ฟเวอร์
โมดูลนี้ส่งออกฟังก์ชั่นที่คุณสามารถใช้เป็นตัวเลือกการกำหนดค่า GenerAtEbuildId ของคุณใน next.config.js
โดยค่าเริ่มต้นมันจะใช้แฮช GIT Commit ล่าสุดจากที่เก็บ GIT ท้องถิ่น (เทียบเท่ากับ git rev-parse HEAD ):
// next.config.js
const nextBuildId = require ( 'next-build-id' )
module . exports = {
generateBuildId : ( ) => nextBuildId ( { dir : __dirname } )
}
// => 'f9fc968afa249d162c924a8d5b4ce6562c164c2e' หากคุณต้องการใช้ ID build ที่สัมพันธ์กับแท็กล่าสุดใน git repo ของคุณให้ผ่าน describe: true เป็นตัวเลือกและผลลัพธ์ของ git describe --tags จะใช้แทน:
// 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) โมดูลนี้ยังเปิดเผยเวอร์ชันแบบซิงโครนัสสำหรับความต้องการที่กำหนดเองเช่นผ่านการสร้าง ID โดยตรงไปยังการกำหนดค่า Sentry เพียงโทรหา nextBuildId.sync({ dir: __dirname }) แทน
หากคุณใช้งานหลายอินสแตนซ์ของแอปของคุณที่อยู่ด้านหลังตัวโหลดบาลานซ์โดยไม่ต้องมีเซสชัน (และคุณกำลังสร้างแอพของคุณโดยตรงบนเซิร์ฟเวอร์การผลิตแต่ละครั้งแทนที่จะเป็นแพคเกจล่วงหน้า) เครื่องมือเช่นนี้จำเป็นต้องหลีกเลี่ยงข้อผิดพลาดต่อไป
Build ID ที่ใช้โดยแอปของคุณจะถูกเก็บไว้ในระบบไฟล์ในไฟล์ข้อความ BUILD_ID ในไดเรกทอรี build ของคุณซึ่งเป็น .next โดยค่าเริ่มต้น
$ npm i next-build-id โมดูลนี้ส่งออกฟังก์ชั่นสองฟังก์ชั่นซึ่งเป็นแบบอะซิงโครนัส ( nextBuildId() การส่งออกหลัก) และอีกหนึ่งรายการที่ซิงโครนัส ( nextBuildId.sync() ) ฟังก์ชั่นทั้งสองยอมรับวัตถุตัวเลือกเดียวรองรับตัวเลือกเดียวกันที่แสดงไว้ด้านล่าง ฟังก์ชั่นทั้งสองส่งคืน (หรือแก้ไข) สตริงซึ่งเป็นตัวแทนของ ID สร้างที่ใช้ GIT
ตัวเลือกที่รองรับคือ:
dir (สตริง, process.cwd() ): ไดเรกทอรีภายในที่เก็บ Git ท้องถิ่น
การใช้ __dirname จากโมดูล next.config.js ของคุณโดยทั่วไปจะปลอดภัย ค่าเริ่มต้นจะถือว่าเป็นไดเรกทอรีที่คุณเรียกใช้คำสั่ง next build แต่สิ่งนี้อาจไม่ถูกต้องตามวิธีที่คุณสร้างแอป Next.js ของคุณ
describe (บูลีน, เริ่ม false ): ใช้คำอธิบายแท็ก git แทนการส่งมอบล่าสุด sha
ระบุสิ่งนี้เป็น true ในการใช้ git describe --tags แทน git rev-parse HEAD สำหรับการสร้าง ID สร้าง หากไม่มีแท็กในพื้นที่เก็บข้อมูล Git ในพื้นที่ของคุณจะมีการใช้การกระทำล่าสุดของ SHA แทนเว้นแต่คุณจะระบุ fallbackToSha: false
fallbackToSha (บูลีน, ค่าเริ่มต้น true ): ทางเลือกกลับไปที่การกระทำล่าสุด sha เมื่อ describe: true และไม่มีแท็กอยู่
ใช้เฉพาะเมื่อใช้ describe: true หากคุณต้องการเข้มงวดเกี่ยวกับการใช้แท็ก (และการแสดงตน) ของแท็กให้ปิดการใช้งานสิ่งนี้ด้วย fallbackToSha: false ซึ่งในกรณีนี้จะมีข้อผิดพลาดเกิดขึ้นหากไม่มีแท็ก
โปรดทราบว่าโมดูลนี้มีวิธีทั่วไปในการรับ ID หรือสตริงสถานะสำหรับที่เก็บ GIT ในเครื่องใด ๆ ซึ่งหมายความว่ามันไม่ได้เชื่อมโยงโดยตรงกับ Next.js ในทุก ๆ ด้าน - ขึ้นอยู่กับวิธีการใช้งานของคุณ
ISC © Andrew Goode