Use una ID de compilación consistente y basada en GIT para su aplicación Next.js
Paquete pequeño para generar una ID de compilación consistente y basada en GIT para su aplicación Next.js al ejecutar next build en cada servidor en una implementación de múltiples servidores.
Este módulo exporta una función que puede usar como su opción de configuración GenerateBuildid en next.config.js.
Por defecto, utilizará el último hash Git Commit del repositorio local de git (equivalente a git rev-parse HEAD ):
// next.config.js
const nextBuildId = require ( 'next-build-id' )
module . exports = {
generateBuildId : ( ) => nextBuildId ( { dir : __dirname } )
}
// => 'f9fc968afa249d162c924a8d5b4ce6562c164c2e' Si prefiere usar una ID de compilación en relación con la etiqueta más reciente de su repositorio GIT, pase describe: true como una opción y la salida de git describe --tags se utilizará en su lugar:
// 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) Este módulo también expone una versión sincrónica para necesidades personalizadas, por ejemplo, pasar la ID de compilación directamente a una configuración de Sentry. Simplemente llame nextBuildId.sync({ dir: __dirname }) en su lugar.
Si está ejecutando múltiples instancias de su aplicación que se sientan detrás de un equilibrador de carga sin afinidad de sesión (y está construyendo su aplicación directamente en cada servidor de producción en lugar de empaquetarla), una herramienta como esta es necesaria para evitar los errores de Next.js como "Hash de archivo de compilación no válido", que ocurre cuando el mismo cliente (código de navegador) habla con múltiples backends del servidor (servidor de nodos) que tienen diferentes identificadores de compilación.
La ID de compilación utilizada por su aplicación se almacena en el sistema de archivos en un archivo de texto BUILD_ID en su directorio de compilación, que es .next de forma predeterminada.
$ npm i next-build-id Este módulo exporta dos funciones, una que es asíncrona (exportación primaria nextBuildId() ) y una que es sincrónica ( nextBuildId.sync() ). Ambas funciones aceptan un objeto de opciones única, admitiendo las mismas opciones que se enumeran a continuación. Ambas funciones devuelven (o resuelven) una cadena, que representa la ID de compilación basada en GIT.
Las opciones admitidas son:
dir (cadena, process.cwd() ): un directorio dentro del repositorio de Git local
Usar __dirname desde su módulo next.config.js es generalmente seguro. Se supone que el valor predeterminado es el directorio desde el que está ejecutando el next build , pero esto puede no ser correcto en función de cómo crea su aplicación Next.js.
describe (boolean, false predeterminado): use la descripción de la etiqueta Git en lugar de la última confirmación SHA
Especifique esto como true para usar git describe --tags en lugar de git rev-parse HEAD para generar la ID de compilación. Si no hay etiquetas en su repositorio de Git local, el último SHA de confirmación se utilizará en su lugar, a menos que también especifique fallbackToSha: false .
fallbackToSha (booleano, predeterminado true ): Fallback to Last Commit Sha cuando describe: true y no existen etiquetas
Solo se aplica cuando se usa describe: true . Si desea ser estricto al requerir el uso (y la presencia) de las etiquetas, desactíelo con fallbackToSha: false , en cuyo caso se lanzará un error si no existen etiquetas.
Tenga en cuenta que este módulo realmente proporciona una forma genérica de obtener una ID o una cadena de estado para cualquier repositorio de Git local, lo que significa que no está directamente vinculado a Next.js de ninguna manera, solo depende de cómo lo use.
ISC © Andrew Goode