Edited at

プロジェクトごとに異なるバージョンのElmを使い分けるTips

More than 1 year has passed since last update.

先日 Elm 0.19 がついにリリースされました!

でも、まだ elm-test が対応してなかったりして、全てのプロジェクトをいきなり Elm 0.19 にアップデートするっていうわけにはいかないですよね...

そこで、プロジェクトごとにElmのバージョンを切り替える、とってもシンプルなTipsをご紹介します。


グローバルインストールしない

タイトルのとおりです。以上です。

もうちょっとだけ補足します。

通常は以下のように -g オプションをつけてグローバルインストールします。

# 0.18の場合

$ npm i -g elm@0.18

# 0.19の場合
$ npm i -g elm@0.19.0-bugfix2

代わりに以下のように -g オプションをつけないでローカルにインストールするだけです。

# 0.18の場合

$ npm i elm@0.18

# 0.19の場合
$ npm i elm@0.19.0-bugfix2

これで、たとえば以下のように npx コマンドを使ってそのプロジェクト用の Elm コンパイラを使い分けられます。

# 0.18の場合

$ npx elm-make --help

# 0.19の場合
$ npx elm --help


関連コマンドもローカルにインストールする

同じように、elm-format とか elm-analyseelm-verify-exampleselm-testもローカルインストールしてしまいます。

$ npm i elm-format elm-analyse elm-verify-examples elm-test

$ # Elm 0.19 の場合は `elm-tst@beta` でインストールします。

通常、elm-test コマンドをグローバルインストールした場合は

$ elm-test --compiler=$(npm bin)/elm-make

のようにローカルインストールした Elm コンパイラの場所を教えてやる必要があります。

elm-test などの周辺コマンドもインストールしてしまうことで、npx が勝手にローカルの elm を実行パスに含めてくれるため、 --compiler オプションが不要になります。

$ npx elm-test


0.19へのアップグレードもらくらく

ローカル環境に Elm コンパイラや周辺ツールをインストールしておくと、0.19へのアップグレードも簡単に行えます。

まず、npm-check-updates コマンドを使えるようにしておきます。

(npm-check-updates はグローバルインストールしておきましょう)

$ npm i -g npm-check-updates

このコマンドを使うと、package.json で管理されている依存パッケージのバージョンをアップグレードすることができます。

$ ncu

elm ^0.18.0 → ^0.19.0-bugfix2
elm-analyse ^0.14.2 → ^0.15.0
elm-format ^0.6.1-alpha → ^0.8.0
elm-verify-examples ^2.3.1 → ^3.0.0

-u オプションをつけると package.json も更新してくれます。

実際にアップグレードしましょう。

$ ncu -u

$ npm i
$ npm i elm-test@beta
$ # elm-test は beta を指定しないと `elm-test init` などが使えません

(もちろん、宗教上の理由で ncu を使えない方は手作業で各パッケージのバージョンをアップグレードしても大丈夫です)

あとは elm-upgrade もローカルインストールして

$ npm i elm-upgrade

npx コマンドで実行するだけです。

$ npx elm-upgrade

もちろん、すでに Elm コンパイラなどもバージョンアップされているので、

$ npx elm make --output=/dev/null src/Foo.elm

みたいにコンパイルして試しながら elm-upgrade で対応しきれなかった部分を修正していきます。

sakura.jpg

さくらちゃんにご飯をあげる