ng-confお疲れ様でした、らこです。
Angular 2もついにRelease Candidateとなりまして、最終リリースへのステップをまたひとつ進めたところです。
Betaから大きく変わっている部分もありますが基本的には機械的に対応可能な破壊的変更なので、さくっとRC対応していきましょう。
パッケージの変更
RCからはnpmで配布するパッケージ自体が変わりました。
今まではすべて angular2 パッケージの中にまとめられて配布されていましたが、今後は細かい単位でパッケージが分割されます。
古いangular2のモジュールと新しいパッケージの対応は以下のようになっています。
angular2/*** |
@angular/*** |
|---|---|
| core | core |
| common | common |
| compiler | compiler |
| testing | core/testing, compiler/testing, platform-browser/testing,… |
| platform/browser | platform-browser, platform-browser-dynamic |
| platform/server | platform-server |
| platform/common | common |
| http | http |
| router | router-deprecated |
| alt_router | router |
| upgrade | upgrade |
@angular/core というパッケージ名は、npmの scoped package という形式で、
「”angular” organizationの “core” パッケージ」という意味になります。
具体的には次のようなインストールコマンドを使います。
$ npm i @angular/core @angular/compiler @angular/common @angular/platform-browser @angular/platform-browser-dynamic
パッケージは小分けになりましたが、各パッケージはpeer dependencyで依存しあっているので、
もし足りないパッケージがあったとしてもインストール後にwarningが発生して教えてくれます。
ところで、一部のAPI、AnimationBuilderやBrowserDomAdapterなどがパブリックなAPIから消滅しています。
内部的には存在していて、無理やり使用することはできますが、自己責任で。
おそらくRC以降に巻き込まれて一時的に隠れているだけだと思われます。
依存パッケージの変更
今までAngular 2はいくつかのpeer dependencyを持っていましたが、それが最小限のものだけになりました。
具体的には、es6-shimとreflect-metadataがpeer dependencyから削除されました。
これは依存しなくなったわけではなく、使用するpolyfillをユーザーに委ねるようにした、いわゆるポリシー変更です。
ES6機能のpolyfillには以前からcore-jsなど他のものを使うことができましたが、es6-shimをインストールしないとwarningがでるという状態だったので、
扱いやすい形に変わったといえます。
platform-browserとplatform-browser-dynamicの分割
従来通りランタイムでbootstrapする方式と、Offline Compilerを使ったstaticなbootstrap方式の両方をサポートするため、
ブラウザプラットフォーム用のパッケージが@angular/platform-browserと@angular/platform-browser-dynamicに分割されました。
元々angular2/platform/browserからexportされてたbootstrap関数は、@angular/platform-browser-dynamicに含まれています。
alt_routerがrouterに昇格
今までのangular2/routerモジュールは@angular/router-deprecatedパッケージとなり、
その名の通り過去のものになってしまいました。
そしてVictor Savkinが作りなおした新しいパッケージが@angular/routerとして配布されています。
しかしまだ@angular/routerは開発途上なので、旧routerから移行するには機能が足りていない場合があります。
既存のAngular 2アプリケーションはまだしばらく@angular/router-deprecatedでもよさそうです。
Beta.17まで順調についてきていればあとはパッケージ名の置換だけで済むはずなので、さくっとRC対応できるはずです。
RCも短いスパンでアップデートされていくのが目に見えているので、置いていかれないようにしていきましょう。