あなたが説明している問題は、通常、ローカル マシンでの開発中にのみ発生し、ビルド間でサイトの出力が固執します。SSG は、アトミック デプロイに重点を置いています。これは、すべてのデプロイが独自の一時コンテナー環境で実行され、生成されたサイトが以前のビルドを完全に置き換えることを意味します。これは、新しくデプロイされたビルドに以前のビルドのファイルが含まれないことを意味します。これは、NetlifyやVercelなどのすべての SSG ホスティング プロバイダーに当てはまります。
あなたが説明している問題は、通常、開発中にローカルでのみ発生し、サイトの新しいバージョンを SFTP などでアップロードして手動でデプロイする場合にのみ発生します。
ローカル開発
ローカル ビルドがライブ環境で取得するアトミック デプロイと一致するように、ビルド ステップの前に出力フォルダーを削除することをお勧めします。clear コマンドをビルド スクリプトに入れることができます。この方法では、それについて考える必要はありません (出力ディレクトリが であると仮定しますdist
)。
"scripts": {
"build": "rm -rf dist/ && eleventy"
}
手動デプロイ
これはサイトを展開するための最良の方法ではありませんが、これを行う場合は、アトミックな展開を模倣しようとします:
- ライブ サイトの webroot の横に新しいビルドをアップロードします。たとえば、ライブ サイトが にある場合
htdocs
、新しいサイトを次のようにアップロードします。htdocs-new
- フォルダを削除し
htdocs
ます。
- に名前を変更
htdocs-new
しhtdocs
ます。
このようにして、以前のビルドの残りが残ることはありません。マイナス面は、ステップ 2 と 3 の間でサイトが使用できなくなることですが、Netlify または Vercel でのアトミックなデプロイではダウンタイムがゼロになります。