apeescape2.com
  • メイン
  • ヒントとツール
  • 人とチーム
  • ツールとチュートリアル
  • トレンド
技術

npmのガイド:Node.jsパッケージマネージャー

JavaScriptは、WebサイトやWebアプリケーションの開発に関して最もよく使用される言語です。多数のリソースが驚異的であり、さらに、利用可能なライブラリの数も驚異的です。

最初は、これらのライブラリは少なく、保守が簡単です。ただし、すぐに十分な依存関係地獄が始まり、より成熟したソリューションが必要になります。

npmは、おそらくJavaScriptの最も人気のあるパッケージマネージャーです。



Node Package Manager(npm)を入力してください–JavaScriptパッケージマネージャーは、 Node.js 、独立して使用することもできますが。プロジェクトの依存関係を非常に細かく制御でき、オープンソースの世界に貢献するための優れた方法を提供します。

npm install を実行するだけで開始できますそれをJavaScriptファイルに挿入します。

特定のバージョンをインストールしたいですか?問題ない。 npm install @1.2.3を実行します。

パッケージをグローバルにインストールしたいですか(MochaやAngular-CLIなど)? -gを追加するだけですそのように:npm install -g angular-cli mocha。

確かに、ほとんどのユースケースはnpmのインストールで停止し、他に何もする必要はありません。ただし、npmには多くの追加機能があり、それらについて説明し、私が不可欠、本当に便利、または単に素晴らしいと思う機能を強調します。

CLIコマンド

CLIは、ユーザーがほとんどの時間をnpmとの対話に費やす場所であり、そのヘルプインターフェイスは実際に役立ちます。

ヘルプのクエリ(npm help)は、オプションの配列全体を吐き出し、npm help-search を実行します。 npmマークダウンから直接検索結果のリストを提供します。

目立つコアコマンドは次のとおりです。

  • install:npmを操作する際の必要性から、ここで言及します。新しいパッケージをローカルまたはグローバルにインストールするため(-gを追加する場合)、またはpackage.jsonにリストされている依存関係をインストールするために使用されますファイル(これについては後で詳しく説明します)。

  • uninstall:これも不可欠です。 node_modulesから特定のパッケージを削除するために使用されますローカルまたはグローバルのいずれかのディレクトリ(-gを追加する場合)。

  • access:これは、コンテキストnpm-organizationsおよびスコープ(プライベート)パッケージ内のnpmユーザー権限管理者の遊び場です。真剣に強力なもの。 adduser、owner、teamなどと組み合わせて使用​​すると、誰が何にアクセスできるかをきめ細かく制御できます。

  • bin:パッケージはいったいどこにインストールされていますか?このコマンドを実行して、ファイルの絶対パスを確認します。

  • cache:npmの左、右、中央からパッケージのインストールを開始する場合、このコマンドは非常に便利です。 lsで呼び出すかローカルにキャッシュされたパッケージのリストを表示する、またはcleanを使用するサブコマンドキャッシュ内にあるすべてのパッケージをクリアするサブコマンド。 npmレジストリがまだ少し不安定だった頃、これは安定した環境に戻るため、またはnpm権限を適切に設定しなかったときにリセットするために不可欠でした。

    Ruby onRailsのベストプラクティス
  • config:後でさまざまな構成オプションについて説明しますが、このコマンドは主に、set、getを使用して、ローカルまたはグローバル構成ファイルの構成プロパティを永続化することを扱います。またはdeleteサブコマンド。

  • dedupeまたはddp:長期間にわたってプロジェクトで作業し、npmから直接パッケージをインストールする場合、このコマンドはローカルパッケージツリーをウォークし、依存関係を単純化しようとします。

  • link:独自のnpmパッケージを開発している場合、これによりグローバルコンテキストへのシンボリックリンクを作成できるため、npmレジストリからグローバルにインストールされているかのようにテストできます。たとえば、CLIがグローバルにインストールされているノードでアセンブリツールを作成している場合、最初にデプロイしなくても、このコマンドを実行してCLIの動作をテストできます。

  • ls:パッケージの依存関係とその依存関係をツリー構造で視覚化するために使用されます。見るのはかっこいいし、他のプロジェクトとの比較にも役立ちます。

  • outdated:これは、インストールされている依存関係の現在の状態と、それらが古くなっているかどうかを評価するために使用されます。ルート依存関係リストが数百行の長さのプロジェクトでは、パッケージを手動でチェックすることはほぼ不可能です。追加-g --depth=0このコマンドを使用すると、グローバルにインストールされたパッケージも確認できます。

  • publish:このコマンドは、npm用の独自のパッケージを開発するときに不可欠です。名前が示すとおりに機能します。パッケージをnpmレジストリに公開します。

  • search:これを使用して、3番目の引数で提供されたテキストを含むすべてのパッケージをレジストリで検索します。

  • shrinkwrap:要するに、このコマンドを使用すると、パッケージ内の特定の依存関係バージョンを順番にロックダウンできるため、semver( セマンティックバージョニング )番号は製品コードを壊しません。

  • star:使用しているパッケージは本当に好きですか?このコマンドを使用して、ターミナルから直接感謝の気持ちを示します。これは、npmレジストリのパッケージのページに反映されます。

  • update:これは通常outdatedの後に続きます古いパッケージを更新するコマンド。

  • version:これはあなたにpackage.jsonをぶつけるための速記を与えますversionプロパティ、およびgitタグをすべて1つで実行します。

これらのコマンドのほとんどはサブコマンドや構成をとることができ、このリストは決してCLIに関するすべての議論ではないことに注意してください。

npm-config

構成はnpmの主要部分であり、構成変数を設定する方法は複数あります。

CLIおよび環境変数による構成

まず、端末からCLIを介して構成を設定できます。

通常、次のようになります:npm -- []。

値が指定されていない場合、オプションはデフォルトでtrueに設定されます。

たとえば、スコープ付き(プライベート)npmパッケージで作業していて、パブリックパッケージとして公開することにしたとします。

これは、--access=publicを追加することで簡単に実行できます。あなたのpublishにコマンド。プロパティをパブリックに指定しなかった場合、デフォルトは制限されます(プライベート)。

このような他のコマンドに追加された構成はどこにでも保持されるわけではないため、CLIを介して構成の配列を設定するのは面倒になる可能性があります。

そのような場合は、環境変数を使用して構成を設定する方がよい場合があります。

npm_config_で設定された環境変数プレフィックスはnpmの設定に使用されます。

例:export npm_config_registry=localhost:4321レジストリ構成オプションをグローバルに設定し、npmが実行されると、ポート4321のローカルホストにあるnpmレジストリを使用します。

npmrcファイルによる構成

特別な.npmrcを使用して構成オプションを設定することもできます。ファイル。要件に応じてさまざまなレベルで設定できます。

  • プロジェクトレベル:プロジェクトのコードのルートとそのpackage.jsonファイル、通常はpath/to/project/.npmrc
  • ユーザーレベル:特定のユーザーのアカウントを構成するディレクトリ。通常は~/.npmrc
  • グローバルレベル:npmがグローバル構成を検索するディレクトリ。通常は$PREFIX/etc/npmrc
  • 組み込みレベル:注意してください。この構成はグローバルであるだけでなく、npmソースコードの一部でもあります。ベストプラクティスでは、維持する責任のないコードを変更しないことをお勧めします(実際には要求します)。通常、/path/to/npm/npmrcにあります。

.npmrcの構成設定次の形式のコマンドを実行することにより、CLIを使用してファイルを変更および永続化できます:npm config set 。

たとえば、npm config set access publicを実行できます。スコープ(プライベート)パッケージの公開構成を永続的に公開します。

デフォルトでは、このコマンドは構成をローカルに保持します(上記のユーザーレベルの構成)が、-gを追加できます。それをグローバルに永続化する。

永続化された構成をプロジェクトレベルまたは組み込みレベルで行う必要がある場合、.npmrcファイルは、テキストエディタを使用して変更する必要があります。

package.jsonによる構成

最後に、構成はpackage.jsonから設定できます。ファイル。ただし、プロジェクトレベル.npmrcであるため、これはめったに使用されません(明示的に必要な場合にのみ使用する必要があります)。ファイルは、パッケージ構成を設定するために従来から好まれている場所です。

注目すべき構成設定

  • access:上で説明したように、権限を設定するために使用されます。

  • always-auth:この設定はデフォルトでfalseに設定されていることに注意してください。 trueに設定されている場合、npmはレジストリに接続するときに常に認証を必要とします。

  • ca:デフォルトはnpm認証局(CA)です。 nullに変更して、既知のレジストラのみへのアクセスを許可するか、特定のCA証明書へのアクセスのみを許可するように変更できます。この設定は、cafile、certとともにおよびstrict-sslはめったに使用されませんが、npmのセキュリティと信頼性の側面について話し、インストールするパッケージが期待するソースからのものであることを安心して確認できます。

  • color:これはデフォルトでtrueに設定され、stdoutに色を付けることで、端末の標準的な暗さから抜け出します。これは、ttyファイル記述子で許可されています。 falseに設定すると、端末は鈍いままになります。 alwaysに設定すると、常にカラーで出力されます。

  • depth:この設定では、実行の深さを割り当てることにより、lsやoutdatedなどの再帰コマンドで表示される内容をきめ細かく制御できます。値0は依存関係の最初のレベルのみを評価しますが、無限大(デフォルト)はすべてのレベルの依存関係を評価します。このルールの例外は、outdatedで使用する場合です。その場合、より適切な出力を保証するために、無限大は0として解釈されます。

  • dev:これはデフォルトでfalseに設定されていますが、trueに設定されている場合(npm installを実行している場合)、package.json内のすべての開発依存関係ファイルは通常の依存関係とともにインストールされます。

  • dry-run:この設定がtrueに設定されている場合、npmはパッケージに変更を加えませんが、代わりに何が行われたかを通知します。これは、dedupeなどの特定のコマンドを実行するときに非常に役立ちます。またはupdate。

  • git-tag-version:デフォルトでtrueに設定されています。この設定は、npm versionを実行するときにgitのバージョンにタグを付けますコマンド。 gitでバージョンにタグを付けた大規模プロジェクトのパッケージマネージャーとしてnpmを使用している場合は、時間を節約でき、package.jsonを更新することを忘れないでください。あなたのためのファイル。

  • loglevel:デフォルトでは、これはwarnに設定されており、npmコマンドを実行するとエラーと警告が出力されます。その他の設定には、出力を提供しないsilentが含まれます。 error、エラーのみを出力に記録します。 http、httpリクエストエラーのみをアナウンスします。 info、有益な出力が必要な場合); verbose、ほとんどすべてをログに記録します。そしてsillyは、その名前が示すように、ばかげた量の出力を提供し、次にいくつかを提供します。

  • production:これがtrueに設定されている場合、npmはそれに応じて動作し、すべてのコマンドを本番モードで実行します。これは、開発またはオプションの依存関係がインストールされず、開発関連のタスクが実行されないことを意味します。

  • rollback:trueに設定すると、失敗したインストールはすべて削除されます。これは、依存関係のインストールが失敗した場合に役立ちます。ロギングのレベルに応じて、失敗したインストールを確認し、それらをメモして、npm installを実行できるはずです。ロールバックオプションをtrueに設定したコマンド。次に、メモとドライランインストール(上記のとおり)を使用して、問題をデバッグできます。

  • save : When installing a package directly from the registry, you can append –save to the command which will add the installed package to the dependencies option in the package.json file. For example, npm install lodash`は、依存関係にlodashを追加します。

  • save-dev:構成の保存オプションと同様に、--save-devを追加しますパッケージをインストールすると、package.jsonのdevDependenciesオプションに追加されます。ファイル。

  • save-optional:構成の保存オプションと同様に、--save-optionalを追加しますパッケージをインストールすると、package.jsonのoptionalDependenciesオプションに追加されます。ファイル。

  • save-exact:パッケージをインストールする場合、save、save-devおよびsave-optionalオプションはpackage.jsonを変更しますsemver range演算子を使用して、インストールされたパッケージをそれぞれのプロパティに挿入します。値trueで「save-exact」構成設定を呼び出す場合、上記の設定の1つと組み合わせて、特定のバージョン番号が使用され、semver範囲は無視されます。

  • save-prefix:これは、save、save-devを使用するときにsemver範囲演算子を設定しますまたはsave-optional。デフォルトは^で、インストール時にパッケージのマイナーアップグレードを実行できます。これは、任意の有効な接頭辞付きsemver範囲演算子に設定できます。

  • tag-version-prefix:従来のデフォルトはvで、npm versionの実行時にgitタグバージョンに追加されるものを指定します。

npmを使用したnpmの更新

npmを使用して自分自身を更新することもできます。

npm install -g [email protected] を実行するだけで、npmが最新の安定版リリースに更新されます。の各バージョンに注意することが重要です Node.js npmの特定のバージョンが付属しています。私の経験では、そのペアリングをあまりいじらないでください。

結局のところ、意図したとおりにペアリングを続けることをお勧めします。

npmをスタンドアロンツールとして使用する場合は、選択したバージョンを使用することの意味を理解してください。同じシステム上で異なるNode.jsバージョン(そしてnpmバージョン)を管理するための優れたツールがあります。 nvm 。

package.jsonファイル

package.jsonファイルは、すべてをリンクする重要な要素です。

これは、パッケージをnpmレジストリに公開するための要件であり、依存関係の管理部分が実現する場所です。

「名前」と「バージョン」の2つの必須フィールドがあり、これらのプロパティを合わせて一意の識別子にする必要があります。

名前フィールドは、によって定義されている特定のルールに従う必要があります 命名に関するnpmドキュメント 、およびバージョンフィールドは semverの仕様 。

npmは、依存関係管理のためにpackage.jsonファイルを読み取ります。

さらに、1マイルの長さの依存関係のリストを作成し、semverバージョンと範囲演算子を使用して、それぞれに使用する特定のバージョンを定義できます。その他の注目すべきプロパティのリストは次のとおりです。

'メイン'

「main」は、アプリケーションへのエントリポイントを定義します。デフォルトはindex.jsです。規則やフレームワークによっては、app.jsの場合があります。またはmain.js。もちろん、好きなように作ることができます。

「スクリプト」

これは過小評価されているプロパティです。

まず、事前公開で何かを行うために使用できます。

次に、ビルドタスク(gulpまたはgruntで定義)、他の依存関係のインストールのトリガー(bowerなど)、webpackを使用した開発サーバーの起動など、頻繁に使用されるコマンドの配列をエイリアスできる場所を提供します。一連のbashコマンドを実行します。

「依存関係」

このプロパティは、互換性のあるsemver番号とともに、アプリケーションに必要なパッケージのリストです。ローカルパッケージをインストールするときにターミナルから変更できるため、これは注目に値するプロパティです。

これは、--saveを追加することによって行われます。 (または省略形-S)npm installの終わりコマンド。

これを行うと、新しくインストールされたパッケージがpackage.jsonの依存関係のリストに追加されます。ファイル。

同様に、--saveを追加することで依存関係を削除することもできます。 npm uninstallを実行しているときコマンド。

各依存関係のsemverバージョン管理パターンとその意味を知っておくことが重要です。

semverルールが厳しすぎると、新機能や改善点を失うことになりますが、semverルールが緩和されすぎると、パッケージの破壊バージョンをラインに沿ってインストールできます。

壊れたパッケージのインストールは、特にパッケージの縮小バージョンが使用されている場合、解決が非常に難しいことが判明する可能性があります。

「devDependencies」

依存関係プロパティとは別に、「devDependencies」プロパティを使用すると、開発フェーズでのみ使用され、本番ビルドには必要のない依存関係を定義できます(ESLint、grunt-contribパッケージ、Protractorなど)。依存関係の場合と同様に、このプロパティは、--save-devを追加することで端末から変更できます。 (または省略形-D)npm installの終わりまでコマンドまたはnpm uninstallコマンド。依存関係で説明したのと同じ注意がバージョン管理にも適用されます。

「アム」

ここで、CLIユーティリティへのパスなど、パッケージの実行可能ファイルを指定できます。このプロパティは、パッケージのインストール時に実行可能ファイルへのローカルまたはグローバルシンボリックリンクを作成するようにnpmに指示します。

「config」

前に説明したように、ここでpackage.jsonを使用して構成設定を定義します。ファイル。

'民間'

trueに設定すると、npmはパッケージの公開を拒否します。

これをアクセス構成設定と混同しないでください。

これは、npmとそのpackage.jsonを利用するプロジェクトがある場合に便利な設定です。ただし、スコープ付きまたはパブリックのいずれかで、npmレジストリに公開することは意図されていません。

意図が変わった場合は、設定をfalseに変更するだけで、パッケージを公開できるようになります。

カスタムプロパティ

package.json名前がまだ定義または予約されていない限り、ファイルはカスタムプロパティも受け入れます。

独自のnpmパッケージの開発

npmエコシステムは、世界中の何千もの異なる開発者によって書かれたパッケージで満たされています。それぞれが何らかの問題を解決し、抽象化を提供したり、何かの実装を提示したりします。

ある時点で、あなたも共有する独自のパッケージを開発したいと思う可能性があります。

まず、package.jsonを作成する必要があります「name」と「version」の最低限必要なプロパティを含むファイル、次に「main」プロパティを使用してエントリポイントを指定します(例:index.js)。

そのindex.jsファイルにコードを書き込むか、npmユーザーアカウントでログインするか、ターミナルから新しいユーザーを作成すると、npmレジストリに公開する準備が整います。

パッケージはパブリックまたはプライベートにすることができます。

公開パッケージは無料で公開でき、誰でも利用できます。

スコープパッケージと呼ばれるプライベートパッケージは、プライベートモジュールユーザーに支払いを行った場合にのみ公開でき、個別の@username/で識別できます。これはパッケージ名の前に付けられます。

スコープパッケージは、publishを呼び出すことで公開することもできます。 --access=publicを使用したコマンド。

さらに、パッケージのコードベースの拡張と改善にもう少し時間を費やし、新しいバージョンを公開するときが来た場合は、| _ +内のパッケージのバージョンを(semverの規則と規則に従って)変更するだけです。 _ |ファイルとタイプpackage.json。

コマンドラインインターフェイスを使用してnpm publishを呼び出すこともできます。ここで、update_typeは、semverで説明されているように、npm version 、patch、またはminorのいずれかであり、これにより、 majorのバージョン番号ファイル。

npm組織

繰り返しますが、 npmドキュメント これは素晴らしいことであり、彼らの言葉を繰り返すだけでは無駄です。

npmのコンテキストで組織について言えることは、組織が非常にきめ細かく、正しく管理されている場合、1つの名前でスコープパッケージまたはパブリックパッケージに取り組んでいる大規模なチームや個人を非常に適切に管理および制限できることです。

習得するのは複雑ですが、非常にやりがいがあります。

npmの力

最終的に、npmが提供するドキュメントは広範であり、詳細については参照する必要がありますが、この記事では、npmの素晴らしさを伝える、基本的な機能とより高度な関連機能の両方の有用な概要を提供します。

すべてのものと同様に、強い意見が存在し、多くの欠点を見つけることができます。ただし、npm(またはノード)を試したことがない場合は、飛び込んで自分で調べてください。思った以上に楽しめる可能性があります。

npmに関するより興味深い記事については、読むことを検討してください npmとBrowserifyでScala.jsを使用する 。

ユーザー調査の価値

Uxデザイン

ユーザー調査の価値
H-1B:ホンジュラスからシリコンバレーへのiOS開発者の旅

H-1B:ホンジュラスからシリコンバレーへのiOS開発者の旅

ライフスタイル

人気の投稿
PHPおよびMySQLでのUTF-8エンコーディングのガイド
PHPおよびMySQLでのUTF-8エンコーディングのガイド
ミニチュートリアル–設計プロセス全体でFigmaの機能を活用
ミニチュートリアル–設計プロセス全体でFigmaの機能を活用
ACRAとCloudantを使用した自動Androidクラッシュレポート
ACRAとCloudantを使用した自動Androidクラッシュレポート
デザインにおけるAIの現在と未来(インフォグラフィック付き)
デザインにおけるAIの現在と未来(インフォグラフィック付き)
UIとUX:ユーザーインターフェイスデザインの重要なガイド
UIとUX:ユーザーインターフェイスデザインの重要なガイド
 
開発者向けのトップ10フロントエンドデザインルール
開発者向けのトップ10フロントエンドデザインルール
ソフトウェア統合の合理化:ApacheCamelチュートリアル
ソフトウェア統合の合理化:ApacheCamelチュートリアル
2019年のベンチャーキャピタル業界の状況(インフォグラフィック付き)
2019年のベンチャーキャピタル業界の状況(インフォグラフィック付き)
マーケットプレイスオペレーション担当副社長
マーケットプレイスオペレーション担当副社長
挑戦的なM&A市場で最大の価値のためにビジネスを売る
挑戦的なM&A市場で最大の価値のためにビジネスを売る
人気の投稿
  • Javaでメモリリークを検出する方法
  • 3D視覚化ソフトウェアオープンソース
  • ほとんどのバックエンドデータベースは、htmlコマンドを解釈できます。
  • phpユニコードからutf8
  • cプログラミングは何に使用されますか
  • nodejsは何に適していますか
  • モンテカルロシミュレーションを実行する方法
カテゴリー
技術 アジャイルタレント 革新 バックエンド Uiデザイン モバイルデザイン プロセスとツール 計画と予測 トレンド 人とチーム

© 2021 | 全著作権所有

apeescape2.com