8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

elm/http 2.0.0がインストールされない、またはelm.jsonの依存パッケージを更新、解決する方法

Last updated at Posted at 2018-12-15

結論

elm-dependencies-analyzerという素晴らしいツールを作ってくれた方がいるのでこれを使って手作業で依存を解決して自分でelm.jsonを書き換えましょう

問題

elm/http 2.0.0が入らない問題が起こっているようです。elm installは現在の依存関係に加えて新しいpackageのバージョンを解決して入れるので元から古いのが入っていると新しいバージョンのものが入らないのです

ちょっと手元のelm.jsonを見てみましょう

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を見てみましょう

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枚あって、まだ全然空きがあるのでよかったら参加してください

8
3
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
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?