結論
elm-dependencies-analyzerという素晴らしいツールを作ってくれた方がいるのでこれを使って手作業で依存を解決して自分でelm.jsonを書き換えましょう
問題
elm/http 2.0.0が入らない問題が起こっているようです。elm install
は現在の依存関係に加えて新しいpackageのバージョンを解決して入れるので元から古いのが入っていると新しいバージョンのものが入らないのです
ちょっと手元のelm.jsonを見てみましょう
{
"type": "application",
"source-directories": ["src"],
"elm-version": "0.19.0",
"dependencies": {
"direct": {
"elm/browser": "1.0.0",
"elm/core": "1.0.0",
"elm/html": "1.0.0"
},
"indirect": {
"elm/json": "1.0.0",
"elm/time": "1.0.0",
"elm/url": "1.0.0",
"elm/virtual-dom": "1.0.0"
}
},
"test-dependencies": {
"direct": {
"elm-explorations/test": "1.0.0"
},
"indirect": {
"elm/random": "1.0.0"
}
}
}
これは手元のcreate-elm-app@2.2.3で生成したelm.jsonです。現在は3.0.1のようですが生成されるものは一緒のようです
このelm.json結構問題で、ここからelm install elm/http
すると1.0.0が入ってしまいます
次はelm init
で作ったelm.jsonを見てみましょう
{
"type": "application",
"source-directories": [
"src"
],
"elm-version": "0.19.0",
"dependencies": {
"direct": {
"elm/browser": "1.0.1",
"elm/core": "1.0.2",
"elm/html": "1.0.0"
},
"indirect": {
"elm/json": "1.1.2",
"elm/time": "1.0.0",
"elm/url": "1.0.0",
"elm/virtual-dom": "1.0.2"
}
},
"test-dependencies": {
"direct": {},
"indirect": {}
}
}
バージョン上がってますね。
ここからhttpを入れるとちゃんと2.0.0が入ります
じゃあこのバージョンに手作業で合わせれば万事解決じゃん!
解決策1:手作業
なんだかいい感じに手作業でバージョンをあげたり下げたりします。elmはそんなに複雑な依存は多分発生しないので適当にバージョン新しくしてけばゴールできるはずです
たぶん
解決策2:elm installをまっさらからやり直し
依存分叩きまくってください
たぶんゴールできますよたぶんね
解決策3;依存解決できるツールを使う
elm-dependencies-analyzerを使ってみよう
使い方はreadmeに書いてあります。
左のテキストエリアにelm.jsonの中身をはっつけてanalyzeボタンを押します。少し待ったら右になんかバージョンが表示されるのでconflictが解消されるまで存分にバージョンをいじくりましょう!
……手作業だね!
まあ、でも、そんなに?大変じゃないですたぶん
終わり
ほんとはelm
コマンド本体にこういう機能があればいいんですけどね
宣伝
elm-uiとかelm-markupの記事書いたりしてます
あと、アドベントカレンダーが3枚あって、まだ全然空きがあるのでよかったら参加してください