NPM Package Managerチートシート



npmnode.jsパッケージマネージャーです。 これを使用して、モジュールと依存関係を管理します。

私のお気に入りのすべてのnpmコマンドの小さなチートシート:





Npmインストール



curl https://npmjs.org/install.sh | sh
      
      







Npmアップデート



npmをアップグレードするにはいくつかの方法があります。 私が好む:

 curl https://npmjs.org/install.sh | sh
      
      





または

 npm install npm -g
      
      







npmでパッケージを検索する



 npm search hook.io
      
      





ヒント: search.npmjs.orgを使用することもできます

2番目のヒント:検索するには、必要なパッケージの名前を知る必要があります(パッケージ名またはその説明に含まれる単語はすべて正常に見えますが、間違って翻訳されている可能性がありますか?)



パッケージ情報を表示する



 npm view hook.io
      
      







ローカルパッケージのインストール



デモンストレーションのために、http-serverパッケージを取り上げましょう。

http-serverは、ノードのコアhttp.Serverクラスの周りの使いやすいラッパーを提供する、私たちが作成したパッケージです。 このモジュールは、APIがCLIバイナリと必要なnode.jsモジュールの両方を提供するため、良い例になります。

http-server-作成したパッケージは、node.jsの基本的なhttp.Serverモジュールを使用するためのよりシンプルなインターフェースを提供します。 このモジュールは、バイナリCLIとnode.jsプラグインの両方にAPIを使用する良い例です。

 npm install http-server
      
      





したがって、作業ディレクトリにhttp-serverをインストールします。

node_modulesに新しいフォルダーが表示されます。 今、あなたはそれに注意を払うことはできません。



アプリケーションにパッケージをインストールする



 mkdir mynewapp/ cd mynewapp npm install http-server touch test.js
      
      





test.js


 var HTTPServer = require('http-server'); var httpServer = new HTTPServer({ root: './public' }); httpServer.start();
      
      





スクリプトを実行する

 node test.js
      
      





私たちのやり方に注意してください:require( 'http-server')? これはどんな魔法ですか? (著者はよくやった)

http-serverはnode.jsのベースモジュールではありません。 このパッケージをnpmからインストールしました。 Node.jsとnpmは対話し、node_modulesディレクトリからローカルモジュールを自動的に接続します。



グローバルインストールとローカルインストールの違いを理解する



デフォルトでは、npmは現在作業しているローカルディレクトリにすべてのパッケージをインストールします。 これは正しいです。 以前のパッケージ管理システムで作業したことがある場合、これは少しわかりにくいかもしれません。

例:
 mkdir anotherapp/ cd anotherapp/ touch test.js
      
      





test.js


 var HTTPServer = require('http-server');
      
      





スクリプトを実行します

 node test.js
      
      





このエラーが発生します:

 node.js:134 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: Cannot find module 'http-server' at Function._resolveFilename (module.js:326:11) at Function._load (module.js:271:25) at require (module.js:355:19) at Object.<anonymous> (/Users/maraksquires/dev/nodeapps/anotherapp/test.js:1:80) at Module._compile (module.js:411:26) at Object..js (module.js:417:10) at Module.load (module.js:343:31) at Function._load (module.js:302:12) at Array.<anonymous> (module.js:430:10) at EventEmitter._tickCallback (node.js:126:26)
      
      





これは論理的であり、httpサーバーを「/ anotherapp /」ではなく「/ mynewapp /」にローカルにインストールしました。

この状況には2つの解決策があります。

a)パッケージを再度インストールしますが、新しいアプリケーションでローカルにインストールします

 cd anotherapp/ npm install http-server
      
      





b)パッケージをグローバルにインストールします

 npm install http-server -g
      
      







グローバルパッケージのインストール



パッケージをすべてのアプリケーションで使用できるようにする場合は、グローバルにインストールする必要があります。

 npm install http-server -g
      
      





-gフラグは、http-serverがグローバルにインストールされ、すべてのアプリケーションからアクセス可能であることを意味します。

これで、どのアプリケーションでもrequire( 'http-server')を呼び出すことができます。



さらに、http-serverパッケージには独自の実行可能ファイルがあるため、このファイルもhttp-server実行可能ファイルとしてインストールされ、コマンドで使用できます。

これで、コマンドを簡単に実行できます。

 http-server
      
      







ローカルにインストールされたパッケージの削除



 npm uninstall http-server
      
      







グローバルにインストールされたパッケージの削除



 npm uninstall http-server -g
      
      







特定のパッケージバージョンのインストール



 npm install http-server@0.3.0
      
      







Githubを使用したモジュールのインストール



重要です。 場合によっては、使用したいが、まだnpmに公開されていないパッチ、フォーク、またはブランチがあります。 幸いなことに、ほとんどのnpmモジュールのソースコードはwww.github.comでも入手できます

 git clone git://github.com/nodeapps/http-server.git cd http-server/ npm link
      
      





これで、http-serverのクローンバージョンがローカルに接続されました。



パッケージをローカルに関連付ける



npmパッケージを含む別のディレクトリがある場合、そのローカルリンクを作成できます。 これは、npmリポジトリでパッケージを公開したくない場合に役立ちます。

 cd http-server/ npm link
      
      





ローカルバージョンでは、ローカルマシン用にhttpサーバーが「接続」されて作成されます。 (接続は「コピーと貼り付け」として作成されます。最初から目的のディレクトリに移動して「コピー」を作成し、次に目的のディレクトリに移動して「貼り付け」を行う必要があります。このモジュールの貼り付け)



複数のアプリケーションのローカルパッケージの関連付け



前に見たように、npmはデフォルトのローカルディレクトリにパッケージをインストールします。 したがって、npmリンク(リンク)はほぼ同じように機能します。

 mkdir newapp/ cd newapp/ npm link http-server
      
      





httpサーバーから新しいアプリnewappへのリンクが作成されたことを示します。 npm link http-serverを実行していなかった場合、欠落しているモジュールに関するエラーを受け取りました。 (そして、ここに私が上で書いた「ペースト」があります。リンクを作成するロジックを理解する必要があります)



アプリケーションパッケージのリンク解除



 cd newapp/ npm unlink http-server
      
      





(ここでは、このアプリケーションの「貼り付け」をキャンセルするだけです)



システム内のパッケージのリンク解除



 cd http-server/ npm unlink
      
      





(ここで、このパッケージの「コピー」をキャンセルします)



新しいパッケージを作成する



 mkdir mypackage/ cd mypackage/ npm init
      
      





(パッケージを作成することは、1つのコマンドでこのような単純なタスクではなく、 別の記事で詳しく読むことができることを自分で注意したいだけです)



新しいユーザーを追加



 npm adduser
      
      







パッケージをnpmリポジトリに公開する



 cd mypackage/ npm publish
      
      







npmリポジトリからパッケージを削除する



 npm unpublish http-server
      
      







npmリポジトリでパッケージのアクセス許可を管理する



公開されたパッケージに対する他のユーザーのアクセス権を設定できます。

 npm owner add marak http-server npm owner rm marak http-server npm owner ls http-server
      
      







package.json形式とnpmを使用した複雑な作業の詳細については、Charlie Robbinの記事blog.nodejitsu.com/package-dependencies-done-rightをご覧ください。



All Articles