しばらく前に、私たちは私たちの「街」(ブドウ市)劉タオ、上の完全な乾燥品を共有するすべての人のためのシニア開発エンジニア招待オープンクラスの電子ラインを、概念やNPMの使用方法のいくつかのためのカリキュラムの過程で多くの学生があります疑問、我々はあなたがこの記事を質問の学生にお答えしたいので、この時間。次の追加の導入に基づいて、我々は自分の最初のNPMパッケージに公開する方法、適切な深さを紹介します。それでは、始めましょう!
モジュラーNode.jsのエコシステムのおかげで、私たちは、NPMは、基本的にノードからなるプロジェクトのどの部分の基礎であると信じています。しかし、実際には、私たちも、NPMは、開発者コミュニティのNode.jsの開発者の中で最も重要なツールの一つであると言うことができます。結局のところ、彼らはパッケージを使用してプロジェクトを管理するために、毎日それを使用します。
私たちは本当にあまりにもNPMそれを理解している場合ただし、インストールパッケージに加えて、それを使用するには?だから、私はむしろちょうどNPMはそれをインストール理解するよりも、あなたはそれをよりよく理解し、使用できるように、ツールの基本を網羅しようとします。
パッケージ管理
我々は、すべてあなたがNPMインストールパッケージを使用することができることを知っているが、それは何を意味するのでしょうか?パッケージは、基本的にフォルダを必要とするコードが含まれている、あなたは、ローカルまたはグローバルにインストールすることができます。
ローカルインストール
ローカルインストールでは、実際にプロジェクトフォルダにファイルをダウンロードすることを意味します。これであなたは「node_modules」というディレクトリを作成していない見つけることができます。このため、単純な仕組みで、ローカルフォルダが非常に大きくなる可能性があります。
だから、どのくらいこのフォルダ?あなたのために説明するための図:
Node.jsのはあなたのためにそれを扱うように実際には、これは単なる冗談です、あなたは通常、このフォルダを無視することができます。
ローカルインストールを実行するには、しなければなりません。
$のNPMインストール[パッケージ名]
あなたは追加することができ—save
、接尾辞をあなたのノードパッケージ名とバージョン保存されますpackage.json
ファイルを。(これは重要ですが、覚えておいてくださいでも重要なあなたが職場でのチームの一部にいるとき、あなたが配布しないので)、もnode_modulesフォルダは、(いずれかのバージョン管理システムにGITを追加されますSVNまたは使用しているすべてのバージョン管理システム)、および単に共有package.json
ファイルを、その後、あなたのチームメイトは、実行させ$npm install
、インストールとアップデートパッケージを完了するために、コマンドを。このフォルダには、保守が容易、全体のファイル共有よりも高速で、全体のフォルダはギガバイトのデータを含むように成長することができます。
以下は、package.json
設定ファイル:
{ |
|
「名前」:「プロジェクト名」、 |
|
"バージョン": "1.0.0"、 |
|
「説明」:「これは基本的な説明です」、 |
|
"メイン": "index.js"、 |
|
"スクリプト":{ |
|
「テスト」:「エコー\」エラー:なしテスト指定\」&& 1" 番出口 |
|
}、 |
|
"著者": "フェルナンドDoglio"、 |
|
"ライセンス": "ISC" を、 |
|
"依存関係":{ |
|
"設定": "^ 3.1.0"、 |
|
"表現": "^ 4.17.1" を、 |
|
"socket.io": "^ 2.2.0"、 |
|
"ウィンストン": "^ 3.2.1" |
|
} |
|
} |
|
あなたがインストールしたパッケージ、またはそのファイルのフィールドを使用すると、(上記の例を使用しない必要に応じて、いくつかを変更することができ、他の多くの中でフィールド)。
グローバル・インストール
あなたはまた、Node.jsのは、あなたが必要とするかもしれ項目のいずれかからそれらにアクセスできるようになることを意味しグローバルなパッケージをインストールすることができます。何がこれを行うと間違っていますか?グローバルインストールされたパッケージが追加されることはありませんpackage.json
、それはpackage.jsonに追加されませんから、なぜそれをインストールグローバルをインストールする必要があり、ファイル?
Node.jsのとNPMを行うことができます使用するための一つの大きな理由は、それがどこかのボックス内からアクセスすることができ、彼らは単にグローバル・スクリプトをインストールすることができ、一般に「バイナリ」のものとして知られている人々を構築することです。これは、コマンドラインツールを作成し、それらをインストールするには、NPMを使用できることを意味します!
たとえば:ExpressJS(最も人気のあるWebフレームワークのNode.jsの1)またはモカ(非常に人気のあるテストライブラリ)も実行可能なバイナリファイルを使用することができますようなソフトウェアパッケージが付属しています。例えば、モカは、あなたが「モカ」と呼ばれるCLIツールを持っているし、ローカルプロジェクトでテストを実行することができるようにするためには、グローバルとローカルにインストールする必要があります。
グローバルパッケージには、PATH環境変数従来のパスに追加する必要があり、シンボリックリンク(またはショートカット)を作成します。
NPM古典的なコマンド
install
コマンドあなたはNPMで使用できる多くのコマンドのひとつ。実際には、脇に約60の異なるコマンド(はい、そんなに!)、私は簡単に説明します、NPMはまた、あなたはあなたに組み込みコマンドを防ぐために、コマンド独自のカスタムを作成することができます十分ではありません。
以下はから取られた、最も一般的なコマンドの一覧です公式ドキュメント:
- アクセス:設定し、公開アクセス・レベル・パッケージ、著者以外の他の人々へのアクセスを制限したりできます。例:
$ npm access public
- adduserの:レジストリにユーザーアカウントを追加します(デフォルトでは、レジストリがNPMレジストリですが、カスタムアカウントを指定することもできます)。例:
$ npm addUser
プロンプトが表示されたら、ユーザーの資格情報(ユーザー名とパスワード)とメールアドレスを入力。 - 監査:インストールの依存関係を実行するためのセキュリティ監査は、既知の脆弱性は、それら(および拡張によって、あなたのプロジェクト)に影響を及ぼしていないことを確認してください。あなたも、このフラグを使用することができ
fix
、監査中に発見することができるすべての問題を解決し、自動的に。 - ビンは:現在のプロジェクトのNPM binフォルダを表示します。
- バグ:エラーリスト新しいブラウザウィンドウを開きます。これについて興味深いのコマンドは、それはあなたがそれを見つけたら、それは新しいブラウザウィンドウを起動します、現在のバグトラッカーパッケージを推測しようということです。
- キャッシュ:開発者は通常、このコマンドを使用していないが、それは彼らが削除、またはNPMのキャッシュを検証するコンテンツを追加することができますが。バッファに、記憶されたHTTPリクエスト情報および追加のデータパケット。通常、これは、NPMによって直接処理され、透過的に開発者のために働くが、あなたは、特に別のパッケージとその異なるバージョン間で切り替えるときに、いくつかの奇妙な行動を見れば、(良いアイデアかもしれキャッシュをクリアしてみてくださいちょうど)安全側)を開きます。
- CI :ほとんど
npm install
オートメーション環境のために同じ(ような連続統合プロセスなど)。このコマンドは、このコマンドよりも厳しいです、install
とインストールが(存在する場合、それは自動的にnode_modulesフォルダを削除します)常に清潔であることを保証するために。 - 完了:タブ補完を有効にするには、そのサブコマンドNPMです。読む完全なドキュメントの詳細については。
- 設定:あなたは、NPMのアクセスと設定オプションを編集、設定することができます。
- 重複排除として:依存関係を減らすために移動中で依存関係ツリーと階層可能な限り重複したエントリをトラバースすることにより、繰り返してみてください。アプリケーションが起動すると成長し、特に有効であるモジュールのより多くを含めることができます。このコマンドを使用し、絶対にオプションですが、依存関係の多くを持っている場合、それは期間を大幅に削減(最も有用なCI / CD環境)をインストールして提供します。
- 非推奨:レジストリリポジトリ内の特定のバージョン(または範囲)のための非推奨警告を追加します。
- タグ-DIST :特定のパッケージラベルの管理を支援します。ラベルのバージョンは番号を覚えていなくても、バージョンを識別しやすくするために、別名として機能することができます。たとえば、デフォルトでは、最新のすべてのライブラリの最終バージョンのマークは、あなただけ実行し
npm install library-name@latest
、NPMは、ライブラリをダウンロードするにはどのバージョンを知っているだろう。 - ドキュメントは:同様のバグ、この一つのコマンドは、パッケージ内の公式文書を推測し、ローカルブラウザでURLを開くしようとしています。
- 医師:システムがNPMを実行していることを保証するために、事前に定義されたチェックのセットを実行する準備ができて最小要件であり:
node
そしてgit
コマンドがアクセス可能で実行可能であるnode_modules
NPMによってフォルダ(ローカルおよびグローバル)、そのレジストリの書き込み又は任意のカスタムバージョンがアクセス可能である、最終的には、NPMのキャッシュが存在し、それが働いています。 - 検索-ヘルプ/ヘルプ: ヘルプは、結果が見つからない場合は、用語の文書のページセットに表示されるヘルプ-Searchは NPMの値下げヘルプファイルになり、フルテキスト検索結果の一覧を表示します。
- フックは:あなたが新しい設定できますNPMフックを、パケットは変更を加えることに興味があるとき、それはカスタムURLを通知します。ときに、新しいバージョンのExpressJSたとえば、次のように入力して通知を受け取ることができます。逆に、あなたが(そのような自動更新の依存関係など)の操作を好き実行するために、この情報を使用することができます。
$npm hook add express
http://your-url.com/new-express-version-endpoint - INIT :などの名前、バージョン、作成者、として、一連の質問を尋ねることによって、プロジェクトを初期化するのに役立ちます 最後に、
package.json
新しいファイルを作成するには、この情報を使用します。また、あなたの特定のスタックに治療をカスタマイズするために、カスタムの初期化手順を提供することができます。 - インストール:新しいパッケージをインストールします。あなたは(あなただけのメインレジストリ、またはでインストールするダウンロードパッケージでパスのtarballファイルにそれをルックアップするために名前を提供することができ、それがある)場所と形式のパッケージを指定することができます。あなたは、最新のバージョンにこのコマンドを実行するたびにインストールしたくない場合は、(たとえば、CI / CD)として(自動環境のために特に便利)、インストールするバージョンを指定することができます。
- LS :インストールされているすべてのパッケージの現在のプロジェクトを一覧表示します。あなたはグローバルパッケージまたはローカルにインストールされたパッケージを一覧表示することができます。いずれの場合も、それだけで表示されません
package.json
また、それらの依存関係とそのバージョンを示しています、ファイル表示名とバージョンを。 - 時代遅れ:プロジェクト時代遅れのパッケージを確認してください。それはあなたのインストールしたパッケージ、現在のバージョンのためのレポートを提供します
package.json
公開したいファイルのバージョンとマスターレジストリの最新バージョン。 - 所有者は:あなたがパッケージ所有者を管理することができます。あなたは非常に重要ですが、パッケージの使用に限定されている場合は、そうではありません、所有者やメンテナライブラリ、している場合。
- ピング: メインNPMレジストリやテスト、認証の現在の構成のpingを実行。あなたが問題をダウンロードまたは任意のソフトウェアパッケージのインストールを持っているときだけです。それだけであなたは、問題の一部を解決するのに役立ちますが、それを覚えておくことが重要です。
- 接頭辞:現在の接頭語を表示し、ディスプレイには、最新のフォルダが含まれ
package.json
たファイルへのパスを。あなたはこの使用できる-g
フラグを、あなたはグローバルパッケージのインストールの実際の位置を取得します。 - 公開:グループを使用する開発者および公的または民間組織が他の人とモジュールを共有することができます。
これらは、最も一般的なまたは最も有用なNPMは、使用できるコマンドですが、あなたが閲覧するための10個の以上の追加のコマンドが残っていますので、私はあなたがすることをお勧めします文書を追加するブックマークに、そして戻ってノートを作成し、それをダブルチェック!
どのように私は自分のバッグを公開します
私はどのように簡単NPMの知識はいについて他の人とあなたの作品を共有する共有したい最後のポイント。リストには、最後のコマンドがされて発行され、基本的にこれを実行することを可能にするコマンドを、が、ここで私はあなたの詳細を与えたいです。
プロジェクトのメタデータの準備
レジストリは、NPMの検索エンジンは、同時にすべてのコンテンツをホストすることができますので、あなたはそれが他の人ができるだけ早くあなたのモジュールを見つけるために、同時にあなたの仕事で得ることができるすべての点ではないインデックス・メタデータを行う偉大なパッケージの本質です。
言い換えれば、あなたのことを確認してくださいpackage.json
設定が正しいです。これらは、あなた(およびその他)に興味深いものとして、あなたのパッケージの主な要因を研究し、共有することを始めました。
- 名前:これは最も明白で最も一般的なのリストで、ユーザーが作成することです
package.json
ファイル名は時間依存性を追跡するように設定されている可能性があります。それはユニークだことに注意してください。 - 説明:他の人がすぐにあなたがインストールしたとき、彼らが得るかを理解できるように、あなたのバッグを説明してください。そして、検索エンジンはすぐにあなたを見つける方法を知っているように、説明のように多くの重要なキーワードを追加してください。これは、需要とエンジン開発指標のニーズとの間の正確なバランスをパッケージ化するために、あなたの最初の試みを見つけるための試みです。
- タグ:これは、キーワードのカンマ区切りリストです。それはあなたがパブリッシングパッケージを開始するとNPMのメイン・サイトでは、彼らはあなたが簡単にナビゲートできるカテゴリとして使用することができるので、これらのタグは、非常に重要であり、言われています。あなたが改善しない場合はそのため、
package.json
タグのプロパティを、他の開発者は、カテゴリナビゲーションによってあなたのバッグを見つけることが困難になります。 - プライベート:あなただけの個人的な使用のために、またはあなたができるだけ早くプロパティを設定する必要がある場合を除き
false
、それ以外の誰も、キーワード検索モジュールを介してあなたを見つけることはできません。 - バグ:これは、例えば、一つの場所にあなたのコンテンツをホストする場合、そこにGithubの公共問題の追跡は、正しいURLにこのプロパティを設定することを保証します。これは、NPMは、リンクが表示され、パッケージのページ上で現在開いている問題の数を表示するのに役立ちます。
- リポジトリ:厳密には属性が必要ですが、あなたはそれを追加した場合、NPMは少数を示すために、このようにそのイベントへのリンク、協力者のリストなどの追加情報を表示することができます。
- ホームページ:以前のように、それは(存在する場合)NPMだけでは、このURLへのリンクを表示するのに役立ちます。あなたが特定のウェブサイトのモジュールのURLにURL(などのGithubリポジトリなど)と、別の専用のコードを入れたときに、これは特に重要です。
- ライセンス:あなたがプロジェクトに設定されている実際のライセンスを表示するために使用されます。あなたのようにそれを追加した場合
package.json
、ファイルの一部、それは別の、より目立つように表示されます。またreadme.mdにそれを言及することができますが、このケースでは、NPMのためのあなたの項目に関する追加情報を提供するために追加されます。
メタデータを提供することにより、私はデータを表示して参照するには、開発者のためにそれを強調するためにNPMができ、前述しました。次の例では、あるウィンストンのパッケージのページ:
そのチームは、メタデータを追加するので、追加のリンクおよび詳細と場所の数を追加します。
良いドキュメント
このステップはオプションですが、あなたのパッケージが使用する他の開発者に利用可能なモジュールであれば、その後、私はあなたがより良い参照に他の人のための良いドキュメントを提供したい示唆しています。
あなたが本当にあなたのツールを数えることができないので、「理解しやすい、シンプル始めました。」NPM
目的は、彼らが他の人のためのツールの問題を解決するためのプリセットのセットを提供することです。したがって、あなたのツールバーを使用してより多くの人々を引き付けるために、あなたの文書を豊かにしてみてください。
公式リリースパッケージ
コーディングが完了した後に、効果的になりpackage.json
、あなたのディレクトリに配置,
し、可能な限り最高の書き込みreadme.md
ファイルを、あなたがアップし公開することができます。
パブリッシング操作を実行するには、2つのことを行う必要があります。
- 使用
npm
(すでにアカウントをお持ちの場合)CLI NPMは、あなたのアカウントにログインします。 - あなたのコードを投稿してください。
それはあなたが単に出版を完了することができ、ちょうど2つのステップです。オンライン:
$のNPMログイン
あなたが正常にログインすると、あなたが入力することができ、資格情報の入力を求められます:
$のNPMが公開します
プロジェクトのフォルダでこれを行う、そうでない場合は2番目のコマンドは失敗します。
また、パッケージのことを覚えておいてください名前はあなたのpackage.jsonファイルになります名前がないフォルダの名前(通常はどちらも同じですが、それは彼らがしなければならないという意味ではありませんから、財産を与えられました)。あなたが名前の重複エラー(NPMがすでにパッケージと同じ名前を持つ考慮して)を経験した場合にそのため、あなたは再び公開それを変更する必要があります。
結論
読書のためのおかげで、私は今まで、あなたがNPMの複雑さと美しさを理解しなければならないことを願っています。それだけのシンプルなツールパッケージがインストールされているではありませんが、文書をチェックするために時間がかかる場合、あなたは何をするために使用することができ、より物事を。