VercelでNode.jsを使ってビルドをする際、このブログのようにプライベートリポジトリのsubmoduleを内包している場合の対処法が知りたかったのでメモとして残しておきます。
真面目にやる場合
- GitHubでrepoの参照権限があるPersonal Access Tokenを発行し、VercelのEnvironment Variablesに登録する
git submodule status --recursive
でコミットのハッシュ値を取得- 以下を実行する
mkdir ${submodule になっているディレクトリ} && cd $_
git init
git remote add origin https://${登録したPersonal Access Token}@${submoduleのリポジトリのURL}
git fetch --depth 1 origin ${コミットのハッシュ値}
git reset --hard FETCH_HEAD
- 上記2.3.をpackage.jsonに登録し、yarnかnpmコマンド経由で呼べるようにしておく。
- Vercelの
INSTALL COMMAND
をpackage.jsonに登録したコマンドでOVERRIDE
する。
同じことを考えている人がいるだろうなと思って検索したら見つかりました。次のスクリプトを使えば良さそうです。
beeinger/vercel-private-submodule: A how to guide for private vercel submodules
真面目にやらない場合
私の場合、submoduleになっているリポジトリはmasterの最新コミットしか使用しないため、以下で済ませました。
// package.json
"scripts": {
"vercel-install": "git clone https://${登録したPersonal Access Token}@${submoduleのリポジトリのURL} --depth=1 ${clone先のディレクトリ} && yarn install"
}
vercel-private-submodule
に倣ってyarn vercel-install
でインストールできるようになっています。