12
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Angular CLI 6.0.0 RCでUniversal + App Shell

Last updated at Posted at 2018-04-21

Angular CLIの最新版である6.0.0がもうすぐ登場しますね!

スクリーンショット 2018-04-22 0.18.45.png

この記事では、現在RC版のAngular CLI 6.0.0でUniversal(サーバーサイドレンダリング)とApp Shellを組み込む手順を紹介します。

※6.0.0リリース後は操作が異なる場合があります

プロジェクトの作成

まずはAngular CLI 6.0.0 RCをインストールしてください。

$ npm i -g @angular/cli@next

新しいプロジェクトを作成します。

$ ng new my-app --routing
$ cd my-app

Universalを組み込む

Universal用のファイル一式を作成します。

$ ng g universal --client-project=my-app

依存関係を更新するためnpm installを実行しましょう。

$ npm i

angular.jsonのパス設定が間違っているので修正します。
※現在は修正されています

angular.json
"server": {
  "builder": "@angular-devkit/build-angular:server",
  "options": {
    "outputPath": "dist/my-app-server",
    "main": "src/main.server.ts",
    "tsConfig": "src/tsconfig.server.json"
  }
}

↑今後修正されると思います(https://github.com/angular/angular-cli/issues/10288)

tsconfig.server.jsonの場所が悪いので移動します。
※現在は修正されています

$ mv tsconfig.server.json src/tsconfig.server.json

移動したのでentryModuleのパスを修正します。
※現在は修正されています

src/tsconfig.server.json
{
  "extends": "./tsconfig.app.json",
  "compilerOptions": {
    "outDir": "../out-tsc/app-server",
    "module": "commonjs"
  },
  "angularCompilerOptions": {
    "entryModule": "app/app.server.module#AppServerModule"
  }
}

App Shellを組み込む

App Shellを作成します。

$ ng g app-shell --client-project=my-app --universal-project=my-app

プロダクションビルド用に設定を変更します。

angular.json
"app-shell": {
  "builder": "@angular-devkit/build-angular:app-shell",
  "options": {
    "browserTarget": "my-app:build",
    "serverTarget": "my-app:server",
    "route": "shell"
  },
  "configurations": {
    "production": {
      "browserTarget": "my-app:build:production"
    }
  }
}

アプリのビルド

ng runでビルドします。

$ ng run my-app:app-shell:production

ブラウザーで確認してみましょう。

$ npx http-server ./dist/my-app

でサーバーを起動して、http://localhost:8080を開くとビルドしたアプリを見ることが出来ます。

おわりに

RC版のAngular CLIでApp Shellを組み込むところまでできました。
手で修正するのが非常に面倒ですね!
2018/05/06 v6.0.0でUniversalのバグが修正されました、やったね!

Angular CLI 6.0.0はまだ開発中のため、1.7系からコマンドが変更された部分では苦労するかもしれません。--helpオプションで確認したり、angular/angular-cliangular/devkitのドキュメントやIssuesを見ると良いと思います。

参考

https://next.angular.io/guide/universal
https://github.com/puku0x/angular-pwa-sample/tree/next

12
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?