1. ホーム
  2. javascript

[解決済み] npmパッケージの "at"(@)プレフィックスの意味は何ですか?

2022-03-19 17:10:54

質問

Angular Component Router ドキュメント 見たことのない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ドキュメント Angularドキュメント .

EDITです。 と表示されます。 public scoped パッケージが検索で正しく表示されるようになりました!