다음에 일관되고 GIT 기반 빌드 ID를 사용하십시오 .JS 앱
작은 패키지는 다음 서버에서 다음 서버에서 next build 실행할 때 다음 서버에서 일관되고 GIT 기반 빌드 ID를 생성합니다.
이 모듈은 next.config.js에서 GenerateBuildId config 옵션으로 사용할 수있는 기능을 내 보냅니다.
기본적으로 로컬 git 저장소 ( git rev-parse HEAD 와 동일)의 최신 GIT 커밋 해시를 사용합니다.
// next.config.js
const nextBuildId = require ( 'next-build-id' )
module . exports = {
generateBuildId : ( ) => nextBuildId ( { dir : __dirname } )
}
// => 'f9fc968afa249d162c924a8d5b4ce6562c164c2e' git repo에서 가장 최근의 태그와 관련하여 빌드 ID를 사용하려면 pass 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를 센트리 구성에 직접 전달합니다. 대신 nextBuildId.sync({ dir: __dirname }) 호출하십시오.
세션 선호도가없는로드 밸런서 뒤에 앉아있는 앱의 여러 인스턴스를 실행하는 경우 (그리고 사전 포장지 대신 각 프로덕션 서버에서 직접 앱을 구축하는 경우) 다음과 같은 도구는 다음과 같은 "유효하지 않은 빌드 파일 해시"와 같은 오류가 필요합니다.
앱에서 사용하는 빌드 ID는 파일 시스템에 빌드 디렉토리의 BUILD_ID 텍스트 파일 (기본적으로 .next )에 저장됩니다.
$ npm i next-build-id 이 모듈은 비동기식 ( nextBuildId() 1 차 내보내기)와 동기식 ( nextBuildId.sync() ) 인 두 가지 함수를 내 보냅니다. 두 기능 모두 아래에 나열된 동일한 옵션을 지원하는 단일 옵션 객체를 허용합니다. 두 기능 모두 git 기반 빌드 ID를 나타내는 문자열을 반환 (또는 해결)로 반환합니다.
지원되는 옵션은 다음과 같습니다.
dir (string, default process.cwd() ) : 로컬 git 저장소 내의 디렉토리
다음 next.config.js 모듈에서 __dirname 사용하는 것은 일반적으로 안전합니다. 기본값은 next build 명령을 실행하는 디렉토리로 가정하지만 다음 Build Next.js 앱을 구축하는 방법에 따라 올바르지 않을 수 있습니다.
describe (Boolean, Default false ) : 최신 Commit SHA 대신 GIT 태그 설명을 사용하십시오.
git rev-parse HEAD 대신 빌드 ID를 생성하기 위해 git describe --tags 사용하려면 true 지정하십시오. Local Git 저장소에 태그가없는 경우 fallbackToSha: false 지정하지 않는 한 최신 커밋 SHA가 대신 사용됩니다.
fallbackToSha (부울, true ) : describe: true and no tag가 존재합니다.
describe: true . 태그의 사용 (및 존재)을 요구하는 것에 대해 엄격하고 싶다면 fallbackToSha: false 로이를 비활성화하십시오.이 경우 태그가 없으면 오류가 발생합니다.
이 모듈은 실제로 로컬 git 저장소에 대한 ID 또는 상태 문자열을 얻는 일반적인 방법을 제공합니다. 즉, 어떤 식 으로든 Next.js에 직접 연결되어 있지 않습니다. 이는 사용 방법에 따라 다릅니다.
ISC © Andrew Goode