Meteor 1.2での変更点
Meteor 1.2がリリースされました→ https://www.meteor.com/
サイトの構成はほとんど変わっていないので、あまり大きなバージョンアップではないようにも見えますが、大きいはずです。チュートリアルは3種類になりました。
Meteor 1.2のBreaking changes
公式ブログでのアナウンス記事はまだありませんが、GitHubのwikiに載っているBreaking changes in Meteor 1.2をもとに変更点を列挙します。
ビルドツールとパッケージの改良
- standard-minifiersパッケージ(自動アップデート)
Meteor 1.1では組み込まれていましたが、1.2からはstandard-minifiers
パッケージを明示的に読み込む必要があります。このパッケージはコードをまとめて(production時は)minifyするためのものですが、別パッケージになったことで開発中に外すことも可能になりました。 - PackageAPIのaddAssets(package.jsへの変更が必要)
Meteor 1.1ではapi.addFiles
ですべてのファイルを登録可能でしたが、1.2からは静的アセットはapi.addAssets
を使って登録することになりました。パッケージをMeteor 1.2で公開する前にpackage.jsを変更する必要があります。 - LESS,CoffeeScript,Stylusの非互換性(package依存性の更新が必要)
LESSとCoffeeScriptとStylusのビルドシステムが新しく変更されたため、これらを使っているパッケージは新しいバージョンを使うように変更して再度公開する必要があります。
meteor-platformの分割
- 新規アプリはmeteor-platformを含まない(利用するパッケージをすべて明示する)
これまではjquery
やmongo
などの標準的なパッケージは宣言しなくても動作していました。これからはこれらのパッケージも分割されたため、利用する場合は明示的に宣言する必要があります。 - test-packagesは何もパッケージを読み込まない
上記の変更に合わせてtest-packages
コマンドはグローバルパッケージを使えることがないようになりました。例えば、Meteor 1.2で$ is undefined
とエラーがでる場合はjQueryパッケージの依存が不足していることが分かります。その場合、package.js
に正しく記述することで解決します。
Ecmascript
- 新しい言語キーワード(変数名などに変更が必要)
ES2015に準拠するためいくつかの名前がキーワードとなりました。例えば、package
やlet
などです。これらを利用しているとエラーになるので変更しましょう。
ユーザ名やメールアドレスで大文字小文字を無視
- ユーザ名とメールアドレスをできるだけ固有のものにする(ユーザデータの読み書きをするコードは修正が必要)
Meteor 1.2ではaccounts-passwordパッケージはユーザ名とメールアドレスの大文字と小文字の違いを無視するようになります。ユーザを検索するためにMeteor.users.findOne({username: x})
というコードを用いている場合は大文字・小文字を区別してしまいます。そこで、ユーザ名を正しく検索するにはAccounts.findUserByUsername(x)
を使う必要があります。メールアドレスの場合はAccounts.findUserByEmail
です。
React
- 公式Reactパッケージ(古いパッケージを使っている場合は更新が必要)
これまで複数のReactパッケージが存在していましたが、これらを統一する公式パッケージreact
ができました。reactjs:react
などの別のパッケージを使っている場合は、公式パッケージに切り替えましょう。リアクティブデータのためにgetMeteorData
を使っている場合はreact
パッケージを使います。Reactレンダリングライブラリのみを使いたい場合は、サブセットであるreact-runtime
パッケージを使います。
モバイル
- 自らAndroidツールを準備する
Meteorに付属していたAndroidツールは削除されました。そのためシステムにインストールされたAndroid SDKが必要になります。これにより、開発環境を更新することが容易になります。Android SDKに関する詳細情報は→ Mac / Linux - Cordovaが4.2.0から5.2.0にアップデート
ツール、プラットフォーム、プラグインがアップデートされました。アプリのコードにも更新が必要になるかもしれません。詳細情報はこちら - Cordovaプラグインの新しい名前
新しいCordovaではnpmでプラグインを管理します。そのため多くのプラグインの名前が変更されました。Meteorが自動で変更しますが、それを理解しておく必要があります。詳細情報はこちら - ロギング出力
既知の問題としてiOSシミュレータでログが出力されない問題がありました。解決策として、meteor run ios-device
でXcodeのプロジェクトを開きデバッグエリアでコンソールログを見えるようにしました。
感想
列挙してみるとbreaking changesではあるものの普通にアプリを開発している分にはそれほど困るほどの変化でもないような気がしてきました。この変化をどう取り込んでいくかがポイントですね。今後のレポートなどに期待しましょう。