Help us understand the problem. What is going on with this article?

Elm 0.18への対応方法

More than 1 year has passed since last update.

はじめに

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に公開しているのであれば、バージョンを更新して公開しましょう。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away