ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript プロジェクト環境管理のための misse と asdf
ロザリオ・デ・キアラ作✏️
mise と asdf は、開発者が複数のバージョンのプログラミング言語と環境を管理できるように設計されたツールです。どちらのツールも、ツールのバージョン間の管理と切り替えを容易にすることで、多言語開発を簡素化することを目的としています。これは、異なるプログラミング言語やフレームワークを使用する場合に共通の課題となります。
asdf は、「シミング」と呼ばれる技術を使用して、Python、Node.js、Ruby などのツールの異なるバージョンを切り替える人気のあるバージョン マネージャーです。特定のバージョンへの一時パスを作成し、環境を変更して、ツールの正しいバージョンがさまざまなプロジェクトで使用されるようにします。ただし、この方法では、これらの shim の動作によりパフォーマンスのオーバーヘッドが発生する可能性があります。
ミセとは、テーブルを準備する方法を意味するフランス語の表現「ミザン・プレイス」の略で、シムへの依存を取り除くことで航空自衛隊を改善することを目指しています。
Rust で書かれた mise は、PATH 環境変数を直接変更し、実行時間を短縮します。 asdf プラグインとシームレスに連携するように設計されていますが、コマンドのあいまい一致や、同じツールの複数のバージョンを同時にインストールする機能などの機能も提供します。
asdf をインストールするには、スタート ガイドに従って、システムに応じて前提条件をインストールします。環境の準備ができたら、ホーム ディレクトリに公式リポジトリを git clone できます。
$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1
上記のコマンドは、インストールを完了するために必要なすべてのスクリプトと構成ファイルを .asdf ディレクトリにクローン作成します。
上記のインストール ガイドの次のステップは、インストール スクリプトを実行することです。繰り返しますが、この手順は環境とオペレーティング システムの詳細によって異なるため、ガイドに従ってシェル初期化スクリプト (.bashrc、.bash_profile など) に適切なスクリプト呼び出しを追加してください。このプロセスの終了後、通常はシェルを再起動すると、asdf をコマンドとして実行できるようになります。
この時点では、asdf が実行されていますが、それを使って何か便利なものを作るには、開発しようとしているプロジェクト (例: Node.js、パイソンなど)。
この目的のために、Node.js のプラグインをインストールします。 asdf では、プラグインは、フレームワークまたはライブラリのさまざまなバージョンを操作できるようにするコードの一部です。この場合、Node.js プラグインをインストールしてから、asdf がそれらをどのように処理するかを理解するために、Node.js のいくつかのバージョンをインストールします。
次のコードを使用して Node.js プラグインをインストールします。
$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1
プラグインのソース コードを含む git リポジトリを明示的に指定する必要があることに注意してください。プラグインを配置したら、次のコマンドを使用して、それを使用して特定のバージョンの Node.js をインストールできます。
$ asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
この例では、この記事の執筆時点では 23.1.0 である最新バージョンをインストールします。次のコマンドを使用して、特定のバージョンの Node.js をインストールします:
$ asdf install nodejs latest
システムで両方が利用可能であることを確認するには、次のコマンドを使用します:
$ asdf install nodejs 20.0.0
使用する Node.js のバージョンを選択するには、次のコマンドを使用します。
$ asdf shim-versions node nodejs 20.0.0 nodejs 23.1.0
asdf は、次の形式で [.tool-versions](https://asdf-vm.com/manage/configuration.html#tool-versions) という名前のファイルを設定することによって、ツールのさまざまなバージョンを処理します。
$ asdf global nodejs 20.0.0 $ node --version v20.0.0 $ asdf global nodejs 23.1.0 $ node --version v23.1.0
ファイル .tool-versions は、上記の Node.js バージョン 20.0.0 で行ったように、使用する予定のバージョンを指定するコマンドを使用して asdf によって自動的に操作されます。パラメータのグローバル、シェル、およびローカルに応じて、環境にさまざまな影響を与えるツールのバージョンを特定の .tool-versions ファイルに追加します。以下に、Node.js バージョン 20.0.0 をインストールする場合のパラメーターの影響について説明します。
ruby 2.5.3 nodejs 10.15.0
最初のコマンドでは、ホーム ディレクトリでバージョン 20.0.0 を使用するように asdf に指示し、ノード --version でバージョンを確認します。次に、test という名前のディレクトリを作成します。テストでは、ノードに別のバージョン (バージョン 23.1.0) を指定して asdf を実行します。また、ノード --version により、バージョン 23.1.0 を使用していることが確認されます。最後に、ホーム ディレクトリに戻ると、ローカルの Node.js のバージョンがまだ 20.0.0 であることがわかります。
システム上で asdf が動作するようになったので、シムとは何か、そして asdf を使用するときにそれが重要である理由を学びましょう。
コンピューター サイエンスにおいて、シムは、異なるバージョン間でコマンド (ライブラリ メソッドの呼び出しなど) を透過的にリダイレクトする方法です。ここで重要なのは「透明」という言葉です。 asdf の全体的な考え方は、ユーザーが、たとえば、node、Python、またはその他のパッケージを作成するときに、実際に呼び出される内容を透過的な方法で変更できるようにすることです。ユーザーは「node」または「python」と入力し続けますが、asdf は、.tool-versions ファイルに記述されている内容に応じて、正しいバージョンへの別のパス (shim) を設定します。
プラグインは、asdf が特定のコマンドの適切なバージョンを選択できるようにする、単なる賢いシェル スクリプトのセットです (例: Node.js プラグインを確認する)。 bin ディレクトリ内のコマンドは、Node.js プラグインを使用して新しいバージョンをインストールしたり、使用する特定のバージョンを選択したりするときに asdf が実行する必要があるものを実装するだけです。
Git リポジトリのクローンを作成する必要がないため、mise のインストール プロセスは asdf に比べて簡単です。
$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1
アクティベーション ガイドは非常にシンプルです。上記のコマンドを実行してシェルを再起動すると、以下を実行できるようになります:
$ asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
これにより、インストールのステータスが表示されます。 misse をインストールしたら、[mise activate](https://mise.jdx.dev/cli/activate.html) コマンドを使用してアクティブ化する必要がある場合があります。
この時点で、mise コマンドは最も一般的なタスク、つまり特定のバージョンのフレームワークをインストールしてシステムでグローバルに使用できるようにするために使用できるようになります。
$ asdf install nodejs latest
ノードの実行可能ファイルがシステムにない状況から開始します。 misse コマンドを使用して、特定のノードのバージョンをグローバルにインストールし、使用できるようにします。現在インストールされているツールのバージョンを確認するには、次のコマンドを使用できます:
$ asdf install nodejs 20.0.0
上記のコマンドでは、上のボックスにインストールされているノード ツールと Python のバージョンを確認できます。
mise フレームワークは、同じ asdf メカニズムを使用して、システム全体および特定のディレクトリ内のツールのさまざまな構成を処理します。 asdf の .tool-versions ファイルの役割は、構成を収集する mise.toml ファイルによって実行されます。
mise には、asdf プラグインに似た概念はありません。asdf では、ツールの特定のバージョン (たとえば、node@20.0.0) のインストールが 2 段階のプロセスであるため、これは良いことです (最初に Node.js プラグインをインストールしてから、特定のバージョンの Node をインストールします)。 misse では、必要なツールの単一バージョンに対処するだけで、mise が舞台裏でツールの構成にかかる面倒な作業をすべて処理します。次の 2 つのボックスでは、asdf コマンドがどのように mise に変換されるかを確認できます。
$ asdf shim-versions node nodejs 20.0.0 nodejs 23.1.0
これはすべて、プラグインとランタイムをインストールし、バージョンを設定する 1 つのステップで実行できます。
$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.1
asdf の一般的な冗長さは、mise の糖衣構文によってエレガントに解決されます。それでも、mise はさまざまなバージョンの処理方法が異なり、エクスペリエンス全体に広範な影響を与えます。次の図では、asdf が動作している環境でノード コマンドを実行すると何が起こるかを示しています。
このプロセスは、コマンドの実行に必要な時間に影響します。一方、mise は、別のメカニズムである PATH 変数を活用することで、構成に応じて適切なツールを選択するという同じ問題を解決します。PATH 変数は、コマンドを実行するためのオペレーティング システムのネイティブ メカニズムです。
パフォーマンスは、mise を使用せずにコマンド (ノードなど) を実行した場合と同じです。興味深いことに、mise は asdf に関して動作が異なります。mise はディレクトリのすべての変更を追跡するため、ユーザーがディレクトリを変更すると、mise は内部フックを呼び出して PATH 変数を更新します。このフックは Rust で書かれており、その場で PATH 変数を設定して環境を設定するため、非常に効率的です。
asdf と misse はどちらも、それぞれ独自のメカニズムを備えた複数のツール バージョンを効果的に管理します。 misse は PATH フック メカニズムのおかげで効率に優れています。一方、asdf はより広範なツール互換性を提供しますが、シム メカニズムによるパフォーマンスのトレードオフがあります。 misse は asdf プラグインと互換性があるため、ツール間のギャップを埋めることができます。
速度を優先するか、選択を優先するかにかかわらず、どちらのツールも開発者が環境を簡単に管理できるようにし、さまざまなパッケージやツールの繁栄したエコシステムを提供します。
NPM:
$ asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
スクリプトタグ:
$ asdf install nodejs latest
3.(オプション) スタックとのより深い統合のためのプラグインをインストールします:
今すぐ始めましょう。
以上がJavaScript プロジェクト環境管理のための misse と asdfの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。