next.jsアプリに一貫したgitベースのビルドIDを使用します
マルチサーバーの展開で各サーバーでnext buildを実行するときに、次の.jsアプリ用に一貫したgitベースのビルドIDを生成するための小さなパッケージ。
このモジュールは、next.config.jsでGenerateBuildid設定オプションとして使用できる関数をエクスポートします。
デフォルトでは、ローカルGitリポジトリ( git rev-parse HEADに相当)から最新のGit Commit Hashを使用します。
// next.config.js
const nextBuildId = require ( 'next-build-id' )
module . exports = {
generateBuildId : ( ) => nextBuildId ( { dir : __dirname } )
}
// => 'f9fc968afa249d162c924a8d5b4ce6562c164c2e' gitリポジトリの最新のタグに関連するビルドIDを使用する場合は、pass optionとして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 })に電話してください。
セッションのアフィニティなしでロードバランサーの後ろに座っているアプリの複数のインスタンスを実行している場合(そして、プリパッキングではなく各生産サーバーでアプリを直接構築する)、次のようなツールは「Invalid Build File Hash」のようなJSエラーを回避するために必要です。
アプリが使用するビルドIDは、 BUILD_IDディレクトリのbuild_idテキストファイルにファイルシステムに保存されます。これはデフォルトでは.nextです。
$ npm i next-build-id このモジュールは、非同期( nextBuildId()プライマリエクスポート)と同期( nextBuildId.sync() )の2つの機能をエクスポートします。両方の関数は、以下にリストされている同じオプションをサポートする単一のオプションオブジェクトを受け入れます。両方の関数は、gitベースのビルドIDを表す文字列を返します(または解決します)。
サポートされているオプションは次のとおりです。
dir (string、default process.cwd() ):ローカルgitリポジトリ内のディレクトリ
next.config.jsモジュールから__dirnameを使用することは、一般的に安全です。デフォルトの値は、 next buildコマンドを実行するディレクトリであると想定されますが、これは次の.jsアプリのビルド方法に基づいて正しくない場合があります。
describe (boolean、デフォルトのfalse ):最新のコミットShaの代わりにgitタグ説明を使用する
これをgit describe --tags git rev-parse HEADの代わりに、ビルドIDを生成するためにtagを使用するtrueに指定します。ローカルGITリポジトリにタグがない場合、 fallbackToSha: falseも指定しない限り、最新のコミットSHAが代わりに使用されます。
fallbackToSha (boolean、default true ):最新のコミットへのフォールバックdescribe: true
describe: trueを使用する場合にのみ適用されます。タグの使用(および存在)を要求することを厳しくしたい場合は、 fallbackToSha: falseでこれを無効にします。この場合、タグが存在しない場合はエラーがスローされます。
このモジュールは、ローカルGITリポジトリのIDまたはステータス文字列を取得するための一般的な方法を実際に提供していることに注意してください。つまり、next.jsに直接結び付けられていないことを意味します。
ISC©Andrew Goode