ホームページ  >  記事  >  ウェブフロントエンド  >  ノードを使用して Mac システムのバージョンを取得する方法の簡単な分析

ノードを使用して Mac システムのバージョンを取得する方法の簡単な分析

青灯夜游
青灯夜游転載
2022-05-04 10:00:173188ブラウズ

node を使用して Mac システムのバージョンを取得するにはどうすればよいですか?次の記事では、nodeを使ってMacのシステムバージョンを効率的に取得する方法を紹介しますので、お役に立てれば幸いです。

ノードを使用して Mac システムのバージョンを取得する方法の簡単な分析

#今日、突然互換性要件に遭遇しました。これは、macOS のバージョンごとに異なる互換性処理が必要です。

意外なことに、一見単純な要件にも紆余曲折がありましたが、幸いなことに最終的には問題は解決されました。

同じようなニーズを持つ他の学生の参考のために、問題を解決するプロセスをここに記録します。

システム タイプの取得

Mac システムでは互換性を処理する必要があるため、まずシステム タイプを区別する必要があります。 # 関連する API を提供します。システム タイプを直接取得するには、os.platform() を使用するだけです。 <pre class="brush:js;toolbar:false;">import { platform } from &amp;#39;os&amp;#39;; console.log(platform()); // &amp;#39;darwin&amp;#39;</pre>対応する macOS の名前は

macOS

ではなく darwin であることに注意してください。 システム タイプは、

os

パッケージを通じて取得するだけでなく、process.platform を通じて取得することもできます。 <pre class="brush:js;toolbar:false;">import { platform } from &amp;#39;process&amp;#39;; console.log(platform); // &amp;#39;darwin&amp;#39;</pre>

システム バージョンを取得する

ノードに詳しい学生の多くは、この時点で、

os.release を通じてシステム バージョンをすぐに取得できると言うでしょう。 ()

。ただし、os.release() を実行すると、その結果が従来の理解と一致していないことがわかります。 たとえば、システムのバージョンは

12.0.1

ですが、 os.release() の実行結果は 21.1.0 です。 View

node official document

node は uname(3) を通じてオペレーティング システムを決定しているため、実行結果は従来の常識に反していることがわかります。

コマンドラインでシステムバージョンを取得する

os.release()

で取得するシステムバージョンはわかりにくいので、ソリューションは実際のシステムのバージョン番号を直接取得できますか? mac には、システム情報を直接取得できる

sw_vers

コマンドが存在します。 <pre class="brush:js;toolbar:false;">$ sw_vers ProductName: macOS ProductVersion: 12.0.1 BuildVersion: 21A559</pre>

sw_vers

コマンドがシステム バージョン 12.0.1 を直接取得していることがわかります。 他のシステム情報が必要ない場合は、コマンド ライン パラメータを追加し、コマンド ラインの結果をフィルタリングすることで、システム バージョンを直接取得できます。

$ sw_vers -ProductVersion
12.0.1

コマンド ラインでは大文字と小文字が区別されないため、コマンド ライン パラメータの大文字と小文字は関係ありません。

-productversion

または -ProductVersion と記述することもできます。 コマンドラインの書き方がわかったので、あとはノードでコマンドラインを呼び出すだけです。

import { execSync } from &#39;child_process&#39;;
console.log(execSync(&#39;sw_vers -ProductVersion&#39;, { encoding: &#39;utf-8&#39; })); // 12.0.1

システム バージョンを効率的に取得する

ノードのサブプロセスを通じてコマンド ライン コマンドを実行すると、正しいシステム バージョンを取得できます。ただし、このメソッドにはパフォーマンス上の欠陥があり、コマンド ラインを実行するためにサブプロセスを作成する必要があり、

os.release()

メソッドと比較してコストが高くなります。 以前の

os.release()

の使用に関する問題は、返される結果が従来の常識に反していて、実際には正しい結果ですが、マッピングが必要であることです。 したがって、システム バージョンは、

os.release()

とマッピング テーブルを通じてエレガントに取得できます。 <pre class="brush:js;toolbar:false;">import os from &amp;#39;os&amp;#39;; const macVersionMap = new Map([ [21, [&amp;#39;Monterey&amp;#39;, &amp;#39;12&amp;#39;]], [20, [&amp;#39;Big Sur&amp;#39;, &amp;#39;11&amp;#39;]], [19, [&amp;#39;Catalina&amp;#39;, &amp;#39;10.15&amp;#39;]], [18, [&amp;#39;Mojave&amp;#39;, &amp;#39;10.14&amp;#39;]], [17, [&amp;#39;High Sierra&amp;#39;, &amp;#39;10.13&amp;#39;]], [16, [&amp;#39;Sierra&amp;#39;, &amp;#39;10.12&amp;#39;]], [15, [&amp;#39;El Capitan&amp;#39;, &amp;#39;10.11&amp;#39;]], [14, [&amp;#39;Yosemite&amp;#39;, &amp;#39;10.10&amp;#39;]], [13, [&amp;#39;Mavericks&amp;#39;, &amp;#39;10.9&amp;#39;]], [12, [&amp;#39;Mountain Lion&amp;#39;, &amp;#39;10.8&amp;#39;]], [11, [&amp;#39;Lion&amp;#39;, &amp;#39;10.7&amp;#39;]], [10, [&amp;#39;Snow Leopard&amp;#39;, &amp;#39;10.6&amp;#39;]], [9, [&amp;#39;Leopard&amp;#39;, &amp;#39;10.5&amp;#39;]], [8, [&amp;#39;Tiger&amp;#39;, &amp;#39;10.4&amp;#39;]], [7, [&amp;#39;Panther&amp;#39;, &amp;#39;10.3&amp;#39;]], [6, [&amp;#39;Jaguar&amp;#39;, &amp;#39;10.2&amp;#39;]], [5, [&amp;#39;Puma&amp;#39;, &amp;#39;10.1&amp;#39;]], ]); const getMacRelease = (release: string) =&gt; { const macRelease = release ?? os.release(); const firstReleaseVersion = Number(macRelease.split(&amp;#39;.&amp;#39;)[0]); const [name, version] = macVersionMap.get(firstReleaseVersion) || [ &amp;#39;Unknown&amp;#39;, &amp;#39;&amp;#39;, ]; return { name, version, }; }; console.log(getMacRelease()) // 12</pre>Mac が新しくリリースされたシステムを認識しやすくするために、新しいシステムのバージョン名は

Unknow

として認識され、新しいバージョンは空の文字列として認識されます。 これはモバイル モデル スコアリング プラットフォームを学習するためのものです。バージョンが空の場合、デフォルトは上位バージョンとなり、下位バージョンの互換性処理には影響しません。

これで、ノードを介してシステムのバージョンをエレガントに取得できるようになりました。

ノード関連の知識の詳細については、

nodejs チュートリアル

を参照してください。

以上がノードを使用して Mac システムのバージョンを取得する方法の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。