🫐

1つのリポジトリからNetlifyの複数のURLに反映する手順

2023/02/03に公開

手順

プロジェクトルートとは別に、サブディレクトリも別プロジェクトルートと見なすにはそちらにも netlify.toml を置く。

.
├── netlify.toml
└── foo
     └── netlify.toml

Netlify の WEB ではそれぞれのサイトの設定を行い、サブディレクトリ側は Build & Deploy → Build Setting → Base Directory にリポジトリルートからの相対パスつまり foo を指定する。これで foo/netlify.toml に気づいてもらえるようになる。netlify.toml 内に base を記述する説明も見かけるがそれは無視していい。それぞれの netlify.toml は今いる場所をプロジェクトルートと見なした記述でいい。

netlify.toml
[build]
  publish = "dist/"
  command = "npm run build"
foo/netlify.toml
[build]
  publish = "dist/"
  command = "npm run build"

公式ドキュメントでこれに関する説明を探すと次のところが該当していると思われる。

https://docs.netlify.com/configure-builds/monorepos/#build-multiple-sites-from-a-monorepo

このシナリオ例では、monorepo にリンクされた 3 つの個別の Netlify サイトをセットアップし、Netlify UI または CLI を使用して、各サイトのベース ディレクトリが monorepo 内のサブディレクトリを指すように設定する必要があります。
(翻訳)

はまったところ

当初ルートの netlify.toml に [[build]] を2つ書いていたがこれはまったく動かない。netlify.toml には [build] は1つと決まっているようだ。しかもよく考えたらURLは1つなのに publish が2つあったら整合性がとれない。

まとめ

  1. リポジトリルートとは関係なく、プロジェクトルートとしたい場所に netlify.toml を置く
  2. サブディレクトリであれば Base Directory にリポジトリルートからの相対パスを指定する
  3. 複数のURLにデプロイするだめだけにリポジトリを分ける必要はない

Discussion