はじめに
Elm 0.18 がリリースされていくらか経ったので、0.17依存のプロジェクトを0.18に対応させる手順を紹介します。
基本的には、Elm 公式のアップグレード手順に従うだけで、ほぼ自動的に対応できますが、いくつか注意点を補足しています。
Elm Platform のアップグレード
公式のアップグレード手順には明記されていないですが、まず Elm Platform のアップグレードが必要です。
基本的には、Elm 公式ガイドに書いてあるインストールの方法で、最新の0.18版を上書きするだけです。
npm の場合なら、単に
npm install -g elm
でアップグレードできるでしょう。
elmenv を使っている場合
elmenv なんかを使うのはやめましょう!
メンテナンスもあまりされていないし、ソースコードから elm をコンパイルするのでクッソ遅いし、コンパイルこけるし、つらいです。
かわりに、elm-useを使うことをおすすめします。
なんと、
npm i -g elm-use
# または
# yarn global add elm-use
elm-use 0.18
だけで、後述する elm-format
もすぐに使えるようになります。
もちろん、すでに Elm 環境が入っている方は、そちらの実行ファイルが優先されないように、削除するなり、パスの優先順位を調整するなりしましょう。
elm-format のインストール
Elm のコードをParsingして、整形するelm-format
をインストールします。
これも公式ドキュメントには明記されていませんが、事前にインストールしておかないと、後述のelm-upgrade
が途中でコケます。
elm-formatレポジトリの指示にしたがって、インストールしましょう。
elm-upgrade
elm-upgrade
を使えば、ほぼ一発で Elm 0.18 への対応が可能です。
npm install -g elm-upgrade
cd path/to/my/elm/project
elm-upgrade
依存ライブラリの変更に起因する修正
ここまでで、基本的な対応は完了ですが、core
パッケージのAPIが変更されたりしている影響で、追加の修正が必要です。
Elmはコンパイラが優秀なので、elm-make
などを走らせてみて、コンパイルエラーが出たところを修正するだけで問題ないでしょう。
詳しくは移行ガイドにも書いてありますが、以下の変更に起因するエラーが出ると思います。
-
program
関数の引数がかわった -
andThen
の引数の順番がかわった - 変数名に
'
を使えなくなった
いずれも、コンパイラの指示通りに修正するだけです。
(オプション) インデントを修正
elm-format
は、4スペースインデントのみに対応しています。
何度か「2スペースに対応してくれ」というissue(#158、#226)がありましたが、設定ファイルでの対応も含め、完全に否定されています。
どうしても2スペースインデントがいい方は、たとえば以下のコマンドで2スペースに変更しましょう。
find src -type f | xargs sed -i 's/ / /g'
(オプション) バージョンアップデート
もし、今回0.18対応させたプロジェクトを、Elm Packagesに公開しているのであれば、バージョンを更新して公開しましょう。