[Astro #22] CIを捨ててローカルデプロイへ:Netlify CLIで手に入れる確実性とスピード

[Astro #22] CIを捨ててローカルデプロイへ:Netlify CLIで手に入れる確実性とスピード

はじめに

1年近く使い続けた、Netlifyですが、初の

「Netlifyのビルド時間制限(Build Minutes)の超過」

になり、GitHub Actionsでのデプロイ環境を構築しましたが、個人開発において、手元のマシンのほうが圧倒的に高スペックであり、環境も完全に制御下にあります。

それならば、GitHub連携による自動ビルドという「当たり前」を捨て、Netlify CLIによるローカルデプロイに切り替えたほうが、確実で早いのではないか。

本記事では、GitHub Actionsの依存関係や環境差異に振り回されるのをやめ、ローカル環境から直接Netlifyへデプロイするフローへの移行手順と、その圧倒的な効率性についてまとめます。

[Astro #22] CIを捨ててローカルデプロイへ:Netlify CLIで手に入れる確実性とスピード

1. Netlify CLI のインストール

Node.jsがインストールされている環境で、以下のコマンドを実行します。

npm install -g netlify-cli

2. Netlify アカウントへのログインとリンク

ブラウザで認証を行い、ローカルディレクトリとNetlifyのプロジェクトを紐付けます。

# 認証(ブラウザが開きます)
netlify login

# プロジェクトの紐付け
# 「Use current git remote origin」を選択すれば自動でリンクされます
netlify link

3. デプロイの実行(ビルド含む)

通常、Netlify CLIは手元でビルドを実行してからアップロードします。

# 本番環境へデプロイ
netlify deploy --prod --dir=dist
  • --prod: 下書き(Draft)ではなく、本番URLに反映させます。
  • --dir=dist: Astro等のビルド成果物が格納されるディレクトリを指定します。

4. 高速化:ビルド済みファイルを即座にアップロード

すでにローカルで npm run build を済ませており、再ビルドなしで dist の中身だけを即座に送りたい場合は、--build=false オプションを追加します。

netlify deploy --prod --dir=dist --build=false

※これにより、CI環境と同じ「ビルド待ち時間」を完全にスキップしてアップロードだけが行われます。

5. (推奨)package.json への登録

毎回コマンドを打つのが手間な場合は、scripts に追記しておくと便利です。

"scripts": {
  "deploy": "node -e \"fs.rmSync('dist', { recursive: true, force: true })\" && astro build --remote && pagefind --site dist && netlify deploy --prod"
}

⚠️ 【重要】2回ビルドを回避する方法
デフォルトのままだと、Netlify CLIが netlify.toml の設定を読み取って、ビルドを2回(自前+CLI側)実行してしまいます。

これを回避して、ローカルのビルド結果をただ送るだけにするには、netlify.toml を以下のように書き換えます。

[build]
  command = "true"  # ここを空コマンドにするのがコツ
  publish = "dist"

これで、npm run deploy 一発で「クリーンアップ・ビルド・即時デプロイ」が完結します。