既存の Angular アプリに Scully を入れてみたのでそのメモ
Scully とは
- Angular 用の静的サイトジェネレーター(SSG)
- 各ページを pre rendering する
- Node.js v10.x 以上、Angular v9.x 以上が必要(今だと v9 RC を使う必要がある)
導入
インストール
- Scully - Getting Started を見ながら導入した
$ 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も一緒に生成される
- Scully 用の routes の
- production 用にする場合は
$ yarn ng build --prodでビルドする - ローカルで動かすときは
$ yarn scully:serveを使うと 1864 ポートで起動する
デプロイ
- もともと Angularfire で Firebase hosting にデプロイしていたので
firebase.jsonの public をdist/staticに変更
結果
- HTML がレンダリングされた状態でレスポンスが返ってくるようになった
| Scully 導入前 | Scully 導入後 |
|---|---|
![]() |
![]() |
- ほとんどロジックがないアプリケーションだったこともあると思うが、想定していたよりも resources のサイズや load time の変化はなさそう
- SSG 化するまでのステップは簡単だった

