とんかつ時々あんどーなつ

〜たとえ低空でも飛行していられるように〜

既存の Angular アプリに Scully を入れてみた

既存の Angular アプリに Scully を入れてみたのでそのメモ

github.com

Scully とは

  • Angular 用の静的サイトジェネレーター(SSG)
  • 各ページを pre rendering する
  • Node.js v10.x 以上、Angular v9.x 以上が必要(今だと v9 RC を使う必要がある)

導入

インストール

$ yarn ng add @scullyio/init
yarn run v1.21.1
$ ng add @scullyio/init
Installing packages for tooling via yarn.
Installed packages for tooling via yarn.
    ✅️ Added dependency
    ✅️ Import HttpClientModule into root module
UPDATE package.json (1992 bytes)
UPDATE src/app/app.module.ts (827 bytes)
UPDATE src/polyfills.ts (3039 bytes)
UPDATE src/app/app.component.ts (301 bytes)
✔ Packages installed successfully.
    ✅️ Update package.json
CREATE scully.config.js (65 bytes)
UPDATE package.json (2052 bytes)
✨  Done in 174.11s.
  • インストールすると ↑ こんなログが出る

ビルド

  • Scully のビルドには Angular アプリがビルドされている必要がある
$ yarn ng build
$ yarn scully
  • ビルドすると dist/static/ 配下に成果物ができる
    • Scully 用の routes の scully-routes.json も一緒に生成される
  • production 用にする場合は $ yarn ng build --prod でビルドする
  • ローカルで動かすときは $ yarn scully:serve を使うと 1864 ポートで起動する

デプロイ

  • もともと Angularfire で Firebase hosting にデプロイしていたので firebase.json の public を dist/static に変更

結果

  • HTML がレンダリングされた状態でレスポンスが返ってくるようになった
Scully 導入前 Scully 導入後
Scully 導入前
Scully 導入後
  • ほとんどロジックがないアプリケーションだったこともあると思うが、想定していたよりも resources のサイズや load time の変化はなさそう
  • SSG 化するまでのステップは簡単だった