Подтвердить что ты не робот

В чем смысл префикса "at" (@) для пакетов npm?

В документации по 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? И как это работает?

4b9b3361

Ответ 1

Это новая функция NPM, называемая "областью охваченных пакетов", которая позволяет эффективно разрешать пакеты NPM. У каждого пользователя и организации на NPM есть своя собственная область, и только они могут добавлять к ней пакеты.

Это полезно по нескольким причинам:

  • Это позволяет организациям четко указывать, какие пакеты являются "официальными", а какие нет.
    • Например, если пакет имеет область @angular, вы знаете, что он был опубликован командой Angular core.
  • Имя пакета должно быть уникальным для области, в которой она публикуется, а не для всего реестра.
    • Например, имя пакета http уже принято в основном репозитории, но Angular может иметь @angular/http а также.

Причина, по которой облачные пакеты не отображаются в обычном поиске, заключается в том, что многие из них являются частными пакетами, создаваемыми организациями, использующими платные сервисы NPM, и им не удобно открывать поиск до тех пор, пока они не смогут полностью убедиться, что они не являются собирается сделать что-то публичное, что не должно быть публичным - с юридической точки зрения, это довольно понятно.

Для получения дополнительной информации см. Документы NPM и документы Angular.

EDIT: Похоже, что пакеты с общедоступными областями теперь отображаются правильно в поиске!

Ответ 2

В основном на npm есть два типа модулей:

  • Глобальные модули - это модули, которые следуют соглашению об именах, которое существует сегодня. Вы require('foo') и есть много радости. Они принадлежат одному или нескольким людям с помощью команды npm install XYZ.

  • Модули с областями видимости - это новые модули, которые "ограничены" под названием организации, которое начинается с @ имени организации, косой черты и, наконец, имени пакета, например, @someOrgScope/packagename. Области являются способом группирования связанных пакетов, а также влияют на некоторые аспекты способа обработки пакета npm.

Пакет с установленной областью устанавливается путем ссылки на него по имени, которому предшествует @-symbol, в npm install:

npm install @myorg/mypackage

смотрите также