astro-notion-blogの開発環境構築(Windows)

Featured image of the post

目次

まえがき

astro-notion-blogはREADMEのクイックスタートの通りに設定するだけで、30分と掛からずにブログの公開が可能です。

READMEではGitとNode.jsが必要な要件とされていますが、WindowsとVSCodeでやろうとしたら上手く行かないことが多すぎて苦労したので記録を残します。

詰まったところ

環境変数が設定できない

READMEに書かれているexportコマンドによる環境変数の設定ができなかった。

.envに環境変数を入れるとnpm run devが問題なく走るようになったが、npm run buildがAPIエラーになった。

原因

VSCodeのターミナルがコマンドプロンプトだった。

Git Bashに変更したらexportコマンドによる環境変数の設定ができるようになり、npm run buildのときに読み込むようになった。

npm run devnpm run buildでは環境変数の読み込み方が違うらしい。

環境変数の管理は.envで行いたいのでdirenvを使うことにした。

ビルド高速化の設定がローカルで実行できない

ビルド高速化の設定を行ったところ、Cloudflare Pagesでは成功してRemote Cache Hitになるが、ローカルではnpm run cache:fetchの実行後にターミナルが文字化けして処理が止まる。

Image in a image block
原因不明

Windowsなのが良くないと思ってLinuxで実行するようにした。

簡単な妥協案

Gitpodというサービスがあるのですが、GitHubと連携してリポジトリを読み込み、Linuxでのビルド環境を構築できるという、上で挙げた問題を簡単に全て解決できるものになっています。

Linux環境にリモートアクセスしてるだけなのですが、ブラウザからでもデスクトップ版のVSCodeからでも同じように使うことが出来ました。

無料プランだと1ヶ月あたり50時間という制限があるだけで、非常に手軽で端末も選ばないのでいいと思います。

僕はGitの管理がコマンドかVSCode上の機能のみとなる(SourceTreeが使えない)ため結局使っていません。

Gitpodでの環境構築

登録する

GitHubアカウントでログインすればOKです。

New Workspaceでリポジトリを読み込む

GitHubアカウントに紐づいた自分のリポジトリを読み込むことができます。

プライベートリポジトリは初期状態だと読み込めないので、何か追加で設定した気がします。パブリックなら何もしなくても問題ありません。

ワークスペースをPinで固定する

ワークスペースは14日後に削除されるみたいなことが書かれているので、ワークスペースを固定します。これで削除されなくなるようです。

Image in a image block
環境変数の設定

exportでシェル変数を設定できます。

READMEのカスタマイズするにはの通りです。

また、Gitpodの機能でリポジトリごとに環境変数を設定する方法もあります。

参考

僕は.envで一括管理しています。

Image in a image block
中身

.envnpm run devにしか対応していないので、npm run buildに対応させるためにdirenvを使います。

direnvの設定

.envに加えて.envrcを作成します。

Image in a image block
中身

気になるようなら.gitignore.envrcを追記しておきます。(.envrcに公開するとマズい情報は入ってないのでやらなくても問題ありません)

Image in a image block

リセットしてリポジトリを読み込ませた直後のターミナルでも、direnvと入れてEnter押したらコマンドが出てくるので最初から入っているはずです。

Image in a image block

(確認できないので勘違いだったらごめんなさい。僕がどこかでインストールするコマンドを実行したのが残ってるんだと思います。)

direnv allowを実行し、.envから環境変数を読み込みます。

ビルドする
Image in a image block

npm run devの開発環境だけでなく、npm run buildの本番環境でも共通の環境変数を読み込み、正常に実行できるようになりました。

キャッシュにも対応できています。

Image in a image block

Windowsでの環境構築

Gitのインストール

適宜やります。

Git 改行 インストール

などで検索すれば出てくると思いますが、改行コードの設定は先にやっておくと後で困りません。

VSCodeのインストール

これも適宜やります。

(好みで)SourceTreeのインストール

僕はGit管理をVSCodeの拡張機能で始めてみたのですが、CUIだけでやろうとすると分かりづらくて挫折しました。

CUIのコマンド類はGitの概念すら理解出来ていなかった初心者には難しすぎたので、GUIでGitを管理できるSourceTreeを使用しています。

使うならインストールします。この先の手順で必須ではありません。

WSL2(Ubuntu)の構築

適宜やります。僕はMicrosoft Storeの普通のUbuntuでやっています。WSL2ならどれもそんなに変わらないと思います。

ユーザー名とパスワードを設定したら完了です。閉じます。

VSCodeからWSLへの接続

WSLの拡張機能が必要です。追加しておきます。

Image in a image block

左下のボタンからリモートウィンドウを開きます。

Image in a image block

WSLへの接続を選択

Image in a image block
Image in a image block

少し待つと

Image in a image block

WSLへの接続が完了します。

Gitリポジトリのクローン

Image in a image block

VSCodeにGitHubアカウントでログインしていれば、リポジトリが選択できます。

Image in a image block

クローン先のフォルダを選択します。良くわからないのでこのままOKにしてます。

Image in a image block

開くか新しいウィンドウで開く を選択します。

Image in a image block

信頼すれば準備OKです。

Node.jsのインストール

Image in a image block

node -vで確認できる通り、Node.jsが入っていないのでインストールします。

astro-notion-blogでの必要要件は

Node.js v18 かそれ以上

です。

これを見ながらやります。

sudo apt-get update
sudo apt-get install nodejs
sudo apt-get install npm
sudo npm cache clean --force
↑--forceを付けないとエラー出るので付けました

sudo npm install n -g
sudo n stable
sudo ln -sf /usr/local/bin/node /usr/bin/node
Image in a image block

これでv18.17.1(2023/08/15時点)が入りました。

最新版を入れるだけならこれで良いと思います。

バージョン指定の方法もあるらしいですね。

環境変数の設定

exportでシェル変数を設定します。

READMEのカスタマイズするにはの通りです。

これで良ければこれで終わりです。

僕は環境変数をファイル上で管理したいので.envに記述しています。

Image in a image block
中身

.envnpm run devにしか対応していないので、npm run buildに対応させるためにdirenvを使います。(開発環境と本番環境の読み込み方の違いによるものらしいです。詳しく知りません。)

direnvのインストール
sudo apt install direnv

.envに加えて.envrcを作成します。

Image in a image block
中身

Gitに変更として読まれるのが気になるなら、.gitignore.envrcを追記しておきます。(.envrcに公開するとマズい情報は入ってないのでやらなくても問題ありません)

Image in a image block
direnv allow

.envrcの読み込みを許可します。

そしてフックの設定

.bashrcの末尾に書き足します。

eval "$(direnv hook bash)"
Image in a image block

コマンドでやるのが面倒だったので、Windows側から直接開いてメモ帳で書き足しました。簡単です。

Image in a image block

一行上にあるのはターミナルでのホスト名表示の変更ですね。

最後にもう一度

direnv allow

をしておきます。

Image in a image block

こんな風に環境変数が読み込まれたことが分かります。

npm run devのテスト

npm installを実行します。色々とモジュールが入ります。

そしてnpm run devを実行します。

Image in a image block

LocalのURL部分をCtrl+左クリックで、ブラウザ上で開発中のページを開けます。

VSCode内でプレビューする方法もありますが、ブラウザでやったほうが実際の環境に近いので僕はやりやすいです。

npm run buildのテスト

npm run buildを実行します。

Image in a image block

こんな風に処理が走り始めたら成功です。

終わったら、npm run previewからビルド後のページが確認できます。

Image in a image block

ビルド高速化の設定

この通りにやるだけです。

僕の場合はこの通りにやってエラーになって困っていたのですが、これまでの手順で構築したWSL2の環境であれば、成功します。

Image in a image block
WindowsのGit Bashで実行したときの文字化け

SourceTreeとWSLの接続

この通りにやります。特に、SourcetreeをWSLで利用する際のエラーの解消が大事です。

右上のターミナルにて下記を実行。

git config --global --add safe.directory '*'

あとがき

結構長く手順を書いてきましたが、astro-notion-blogの使用者のレベル想定が難しくて、どこまで書けばいいのか分からなくなりました。

僕自身はGitの概念も理解していないような初心者でしたが、VSCodeやターミナルは使っていたのでそこは平気です。人によって違うのでスクショ多用するしか無くなってしまいました。

公式のREADMEとクイックスタートの手順が初心者でも分かりやすいので、あれくらいシンプルで分かりやすく書けるようになりたいです。