LoginSignup
13
7

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-08-24

先日 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
さくらちゃんにご飯をあげる

13
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
7