Angular Universal で プリレンダリングする
2021/08/18
はじめに
scully を使ってSSGをしていたが netlify にデプロイするときに mixed contents で警告が出るため移行する。
導入
ng add @nguniversal/express-engine
すると必要なファイルが生成される。
プリレンダリング
上記の add で npm script に prerender が追加されている。angular.json 上の prerender を実行してくれる。
以下のようにルーティングを渡して上げるとプリレンダリングされたファイル郡が生成される。
ng run <app-name>:prerender --routes /hoge/1 /hoge/2
またルーティングがたくさんある時、ファイルに記述しそのファイルを渡すことが出来る
# routes.txt
/hoge/1
/hoge/2
ng run <app-name>:prerender --routes-file routes.txt
終わりに
当サイトでは assets に JSONファイルをおいてデータ管理しているけどAngularUniversalではフルパスでのアクセスが求められるため、プリレンダリング時にうまく取得できないのでデータを別でホスティングする必要がある、どうにかしたい。