Use um ID de construção consistente e baseado em Git para o seu App Next.js
Pequeno pacote para gerar um ID de construção consistente e baseado em Git para o seu aplicativo Next.js ao executar next build em cada servidor em uma implantação multi-servidor.
Este módulo exporta uma função que você pode usar como sua opção de configuração GenerateBuildID em next.config.js.
Por padrão, ele usará o hash mais recente do Git Commit no repositório Git local (equivalente à git rev-parse HEAD ):
// next.config.js
const nextBuildId = require ( 'next-build-id' )
module . exports = {
generateBuildId : ( ) => nextBuildId ( { dir : __dirname } )
}
// => 'f9fc968afa249d162c924a8d5b4ce6562c164c2e' Se você preferir usar um ID de compilação em relação à tag mais recente do seu repositório Git, descreva describe: true como uma opção e a saída do git describe --tags serão usadas:
// 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 também expõe uma versão síncrona para necessidades personalizadas, por exemplo, passando o ID de construção diretamente para uma configuração de sentinela. Basta ligar para nextBuildId.sync({ dir: __dirname }) em vez disso.
Se você estiver executando várias instâncias do seu aplicativo sentado atrás de um balanceador de carga sem a afinidade da sessão (e estiver construindo seu aplicativo diretamente em cada servidor de produção em vez de pré-embalá-lo), uma ferramenta como essa é necessária para evitar erros do Next.JS como "hash de arquivo de compilação inválidos", que acontece quando o mesmo cliente (código do navegador) fala com vários servidores (nó) que possuem IDs de construção.
O ID de compilação usado pelo seu aplicativo é armazenado no sistema de arquivos em um arquivo de texto BUILD_ID no seu diretório de compilação, que é .next por padrão.
$ npm i next-build-id Este módulo exporta duas funções, uma que é assíncrona ( nextBuildId() Primary Export) e uma que é síncrona ( nextBuildId.sync() ). Ambas as funções aceitam um único objeto de opções, suportando as mesmas opções listadas abaixo. Ambas as funções retornam (ou resolvem) uma string, representando o ID de construção baseado em Git.
As opções suportadas são:
dir (String, Padrão process.cwd() ): um diretório no repositório Git local
Usando __dirname do seu módulo Next.config.js é geralmente seguro. O valor padrão é considerado o diretório do qual você está executando o next build , mas isso pode não estar correto com base em como você cria seu próximo.js aplicativo.
describe (booleano, padrão false ): use a descrição da tag git em vez de mais recente commit sha
Especifique isso como true para usar git describe --tags em vez de git rev-parse HEAD Para gerar o ID de construção. Se não houver tags no seu repositório Git local, o mais recente Commit SHA será usado, a menos que você também especifique fallbackToSha: false .
fallbackToSha (booleano, padrão true ): fallback do mais recente Commit SHA quando describe: true e nenhuma tags existe
Somente se aplica ao usar describe: true . Se você deseja ser rigoroso em exigir o uso (e presença) de tags, desative isso com fallbackToSha: false , nesse caso, um erro será lançado se não houver tags.
Observe que este módulo realmente fornece uma maneira genérica de obter uma string de ID ou status para qualquer repositório Git local, o que significa que não está diretamente ligado ao Next.js de forma alguma - depende apenas de como você o usa.
ISC © Andrew Goode