npmを使用してnw.jsベースのGUI対応アプリケーションをグローバルにインストールする

npm パッケージマネージャの「 npm install 」コマンドは、特定のモジュールの依存関係を「/ node_modules」サブディレクトリ ローカルにインストールするため最もよく使用 ます



ただし、 「- gスイッチ (「global」という単語から)を使用してこのコマンドを実行することは可能です。 グローバル (つまり、システム全体に共通)の場所で指定されたパッケージのインストールを提供します。 さらに、PATH(必要な任意のディレクトリからの以降の起動)に、インストールされたパッケージのpackage.jsonファイルの「bin」 プロパティで指定されたコマンドが表示されます。



ドキュメントによると、Windowsでこのような一般的な場所は、ノードインストールディレクトリのサブディレクトリ「/ node_modules」です。 他のシステムでは、このような一般的な場所はほとんどの場合、ディレクトリ「/ usr / local / lib / node_modules」です (ノードはディレクトリ「/ usr / local / bin」にインストールされます)。



通常、このアプローチは、コマンドラインから実行するように設計されたさまざまなユーティリティのグローバルインストールに使用されます。 以下に例を示します。





ただし、CLI(コマンドライン)はウェッジに対応していませんでした-Habrahabrの読者は、Node.js APIを使用するJavaScriptアプリケーションに、HTMLおよびCSSで構成されるGUI(グラフィカルユーザーインターフェイス)も装備できることを既に認識しているはずです。 これを行うには、エンジン上でNodeの代わりにそのようなアプリケーションを実行する必要があります。これは昨年までnode-webkitと呼ばれ、現在(2015)年に1月14日にnw.js名前変更され ました。



GUIアプリケーション、npmを使用してnpmパッケージからシステムにグローバルにインストールすることもできます。 それについて話しましょう。



最初のステップは明確です。GUIアプリケーションのソースコードをnpmパッケージ 入れ、そこに入れる必要があります。



ただし、このコードを実行するにはnw.jsエンジンも必要になりますが、同じパッケージに入れることはあまり合理的ではありません。 まず、エンジンボリューム(たとえば、80メガバイトを超えるWindowsの場合)は、エンジンを各パッケージに挿入すると、 npm-packageリポジトリに過剰な負荷がかかるリスクがあります。 第二に、システム(Windows、Linux、Mac OS X)またはそのビット容量(32ビットまたは64ビット)に応じてエンジンは異なるはずです-エンジンの6つの可能なバージョンすべてをnpmパッケージ入れると、リポジトリだけでなく、エンドユーザーも合計ボリュームから開始し、わずか0.5ギガバイトで到達します。



この問題を克服するために、 開発者npm-package nwを作成ました。GUIアプリケーションは、その依存関係( package.jsonファイルの「dependencies」セクションで)を指定できます。このパッケージがインストールされると、独自に定義されますpackage.jsonファイルで、特定の最終オペレーティングシステムに適したインターネットからnw.jsの正確なバージョンを自動的にダウンロードするポストインストールスクリプト。



また、nwパッケージpackage.jsonファイルの「bin」プロパティで)「nw」コマンドも定義することに注意してください。 したがって、 GUIアプリケーション このコマンドを独自の「開始」 スクリプトとして指定できます。その後、ディレクトリで npm start 」コマンドを発行することにより、 GUIアプリケーションを開始できます



しかし、これはGUIアプリケーションを起動する最も便利な方法ではないことがすぐにわかります。 2語ではなく1語(アプリケーション名)で構成され、さらに任意のディレクトリからのコマンドで起動できるようにする方がはるかに便利です。 package.jsonファイルフィールドにスクリプトがある場合、アプリケーションはこの目標を達成できると上記で述べました。npmは、グローバルインストール中にこのスクリプトを自動的にPATHに配置し、目的の名前を付けます。 さて、nwパッケージは .findpath() 」メソッドをエクスポートします。このメソッドは、ダウンロードされたnw.jsエンジンの特定の場所を見つけるために使用できます(その後のエンジンの起動用)。



たとえば、 ハイパーテキストベクトルFidonetのブラウザの一部として、 このようなスクリプトのオープンソースコードは次のようになります



#!/usr/bin/env node require('child_process').spawn( require('nw').findpath(), ['.'].concat( process.argv.slice(2) ), { cwd: __dirname, detached: true, stdio: 'ignore' } ).unref();
      
      





fidonetovskogoには特に何も含まれていないことが簡単にわかります。 したがって、 npmパッケージからグローバルにインストールする場合は、 GUIアプリケーションにわずかな変更を加えることなく、同じ例をすべて使用できます。



この例の次のフラグメントに注意してください。





上記のアプローチは、以前のnode-webkitエンジンを使用したnw.jsの代わりに、アプリケーションのインストールにも適用できます。 この目的のために、 npm nwパッケージの代わりに、以前の(さらに、非公式の) npmパッケージ -nodewebkitを使用する必要があります



All Articles