Angular Component Router documentation で、今まで見たことのないnpmコマンドにつまずいただけで、何が起こっているのかわかりません:
npm install @angular/router --save
@angular/router
の意味は何ですか?
文字列全体がパッケージ名ですか?しかし、 npmjs.com で検索を使用すると、そのパッケージが見つかりません。また、コマンドライン検索ではそのようなパッケージは返されません。
npm search @angular/router
:No match found for "@angular/router"
それでは、@angular/
はnpmの何らかのプレフィックスメカニズムですか?そして、それはどのように機能しますか?
これは、「スコープ付きパッケージ」と呼ばれるNPMの新機能であり、NPMパッケージのネームスペースを効果的に許可します。 NPM上のすべてのユーザーと組織には独自のスコープがあり、パッケージを追加できるのは彼らだけです。
これはいくつかの理由で便利です。
@angular
である場合、Angularコアチームによって発行されたことがわかります。http
はメインリポジトリで既に使用されていますが、Angularには@angular/http
も含めることができます。スコープパッケージがパブリック検索に表示されない の理由は、それらの多くがNPMの有料サービスを使用している組織によって作成されたプライベートパッケージであり、可能な限り検索を開くのが難しいためです。彼らが公にすべきでないものを公にしないことを完全に確信してください-法的観点から、これはかなり理解できる。
詳細については、 NPM docs および Angular docs を参照してください。
基本的に、npmには2種類のモジュールがあります。
グローバルモジュール-これらは、今日存在する命名規則に従っているモジュールです。あなたはrequire('foo')
と多くの喜びがあります。 npm install XYZ
コマンドを使用して、1人以上のユーザーが所有しています。
スコープモジュール-これらは、@
で始まる組織名、スラッシュ、そして最後にパッケージ名で「スコープ化」される新しいモジュールです。 @someOrgScope/packagename
。スコープは、関連するパッケージをグループ化する方法であり、npmがパッケージを処理する方法に関するいくつかのことにも影響します。
スコープ付きパッケージは、npm installで@記号が前に付いた名前で参照することによりインストールされます。
npm install @myorg/mypackage
また見なさい