複数のバージョンの自動管理


あなたは、あなたが複数のプロジェクトに取り組んでいて、Java、NodeJsまたはPostgresの複数のバージョンに対処しなければならないこの状況で、これまでにありましたか?この記事では、さまざまなランタイムのバージョンを自動的に現在のフォルダー、およびプロジェクトに応じて切り替える方法を発見します.📁
  • Setting the Scene
  • ASDF: Our Magic Wand
  • An Example
  • Setting Up ASDF
  • Usage
  • Wrapping Up
  • 場面の設定


    別のクライアントのための別のプロジェクトに取り組んでフリーランスの開発者として、おそらくこの状況で自分自身を発見している:プロジェクトAはJava 8、プロジェクトBはJava 11で実行し、プロジェクトCは、Java 17で実行されます.簡単にこれらのバージョンを切り替えるには、使用している可能性がありますupdate-alternatives コマンド.
    sudo update-alternatives --config java
    
    これはかなりうまく動作しますが、このアプローチには欠点があります.別のバージョンに切り替える必要があるたびに手動でこのコマンドを実行する必要があります.また、このコマンドはすべてのツールで動作しませんnode or postgres .
    この問題を解決する一つの方法はDockerを使うことです.実際、Dockerの目的は、現在のプロジェクトのすべての正しいバージョンを含むイメージを作成することです.しかし、誰もがDockerを知っているわけではなく、すべてのプロジェクトがこのセットアップを構築するためにDockerFileを持っているわけではありません.また、すべてのチームは、DockerFileを構築する時間を持っていない:プロジェクトのサイズに応じて、それは簡単に簡単に1つを作成するために取得することができます.
    もう一つの解決策は、中でJava 8の間で自動的にスイッチする魔法の杖のような何かを持つことになっていますproject-A フォルダとJavaproject-B フォルダなど.
    実際、この魔法杖は存在し、呼ばれますasdf . 🪄

    我々の魔法の杖


    だから何が本当にasdf ? それはあなたのランタイム版(Java、NPM、ノード、Postgres、PHP、さらに多くの)の間に自動的にあなたの現在のフォルダに応じて切り替えるCLIツールです.これを行うには、ファイル名.tool-versions (あなたがそれを使用する必要があるフォルダにある)は、各ツールの使用するバージョンを知っている.このファイルには、使用する正しいバージョンの各ツールのマッピングリストが含まれています.
    java openjdk-17
    nodejs 17.3.0
    postgres 13.5
    
    現在のフォルダには.tool-versions , asdf ちょっと親ファイルを見て、そのようなファイルを含んでいる最初のものを見つけてください.その結果、各ツールのデフォルトバージョンを定義する必要がありますasdf このデフォルトのバージョンは.tool-versions ファイルが親フォルダに見つかった.デフォルトのバージョンはホームディレクトリに保存されます.~/.tool-versions .
    何か面白いことは、これを行うことができます.tool-versions ファイルがGitリポジトリにファイルされるように、あなたの同僚はまた、異なるツールの正しいバージョンを持つことができますasdf . 💪🏼

    一例


    あなたのデフォルトを言いましょうnode バージョンは17.3.0ですが、あなたが取り組んでいるプロジェクトの一つは少し古いです.端末を起動し、コマンドを実行するとnode バージョンは、あなたの現在の1つが表示されます.
    $ node --version
    v17.3.0
    
    このコマンドは、project-A フォルダ.しかし、あなたが言うならばasdf これはバージョン2.13.0のnode このプロジェクトでは、出力が変更されます.
    $ asdf local nodejs 12.13.0
    $ node --version
    v12.13.0
    
    そして別のディレクトリに変更するとnode バージョンは魔法のようにデフォルトの1つに変更されます.
    $ cd ..
    $ node --version
    v17.3.0
    
    全く狂った、右?🤯 今すぐセットアップ方法を見てみましょうasdf (スポイラー警告:それは途方もなく簡単です).

    ASDFの設定


    まず第一に、ダウンロードする必要がありますasdf ( LinuxとMacOSで利用できますが、残念ながら
    Windowsではない).これを行うには、ちょうどあなたのホームフォルダにGitリポジトリをクローンします.
    git clone https://github.com/asdf-vm/asdf.git ~/.asdf
    

    If you are on MacOS, you can simply use brew.

    brew install asdf
    

    一度完了すると、これらの2行を追加する必要があります.bashrc (or .zshrc ).
    . $HOME/.asdf/asdf.sh
    . $HOME/.asdf/completions/asdf.bash
    
    そして、それはあなたが正常にインストールしましたasdf ! 🎉

    用途


    使うasdf , まず必要なプラグインを追加する必要があります.プラグインはツールに対応しますjava Javaのバージョンを切り替えるプラグインnodejs NodeJSのバージョンを切り替えるプラグインなど.プラグインを追加するには、次のコマンドを実行します.
    asdf plugin add [plugin]
    
    この例では、nodejs , そこで、このプラグインをインストールします.
    asdf plugin add nodejs
    

    💡 You can list all the available plugins with the asdf plugin list all command. As this will produce a pretty big list, you can filter the results with grep.

    asdf plugin list all | grep node
    

    今私たちはnodejs プラグインは、我々は使用するバージョンをダウンロードする必要があります.我々の場合では、12.13.0と17.3.0の両方のバージョンが欲しい.
    asdf install nodejs 12.13.0
    asdf install nodejs 17.3.0
    
    これらのバージョンをインストールした後、最後のステップは、プロジェクトに応じて使用するいずれかを指定することです.そうするために、12.13.0を使用するプロジェクトのフォルダに頭を向けましょうproject-A ) を選択し、nodejs バージョン.
    asdf local nodejs 12.13.0
    
    そして、それ!ノードの12.13.0バージョンはproject-A ディレクトリとサブディレクトリ.🥳
    あなたが現在走るならばls -al すべてのファイルを一覧表示するには.tool-versions 正しいノードバージョンを含むファイル.あなたのバージョン管理システムにそれをコミットすることができます.
    nodejs 12.13.0
    

    💡 When cloning the project containing this file, your colleagues don’t even have to manually install the listed versions: they can simply run asdf install, and the magic wand will take care of downloading all required versions.


    最後に、私たちが以前に見たように、我々がそうしないデフォルトのバージョンを定義する必要があります.tool-versions ファイルをその中で、または、その親フォルダで.この場合、デフォルトのノードのバージョンは17.3.0になります.
    asdf global nodejs 17.3.0
    

    💡 You can also specify a version for the current shell.

    asdf shell nodejs 17.3.0
    

    そして、それは、我々は正常に手動で我々の新しいバージョンのおかげで我々のランタイム版の間で切り替えることの痛みを取り除くことができました.🪄

    ラッピング


    ありがとうasdf , 当社のランタイム版が自動的に管理されます.新しいプラグインを使用する必要がある場合、手順は常に同じです.
  • 対応するプラグインをインストールしますasdf plugin add [plugin]
  • 必要なすべてのバージョンをインストールします.asdf install [plugin] [version]
  • 関連するプロジェクトのローカルバージョンを選択しますasdf local [plugin] [version]
  • このプラグインのデフォルトのバージョンを選択しますasdf global [plugin] [version]
  • 詳細については、または場合は、この素晴らしいツールに助けを必要とするに躊躇しないでくださいasdf-vm.com . また、自由に星を感じるGitHub Repository of asdf このプロジェクトの裏でチームをサポートする.😉
    私はこの記事があなたにとって有益であることを望みます、そして、私は次のものであなたに会います.🤘🏼

    私からのより多くの記事