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

В документации на угловой компонентный маршрутизатор я просто наткнулся на команду 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 core.
  • Имя пакета должно быть уникальным для области, в которой она публикуется, а не для всего реестра.
    • Например, имя пакета http уже принято в основном репозитории, но Angular может иметь @angular/http а также.

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

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

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

В основном существуют два типа модhive npm, которые –

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

  • Модули с областью действия – это новые модули, которые «обламываются» под именем организации, которое начинается с @ и сопровождается косой чертой, например @somescope/somepackagename . Области являются способом группировки связанных пакетов вместе, а также затрагивают несколько вещей о том, как npm обрабатывает пакет.

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

 npm install @myorg/mypackage 

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

  • Как использовать модуль sqlite3 с электроном?
  • Есть ли способ автоматически создать файл package.json для проектов Node.js
  • npm / yoman установить генератор-угловой без sudo
  • Как установить модуль глобально с помощью npm?
  • npm install vs. update - какая разница?
  • npm install не работает
  • Команда для удаления всех модhive npm по всему миру?
  • Найдите версию установленного пакета npm
  • Использование npm за корпоративным прокси .pac
  • Установите зависимости глобально и локально с помощью package.json
  • Как использовать модули npm из машинописного текста?
  • Interesting Posts

    Аккордеонная ячейка таблицы – Как динамически расширять / сокращать uitableviewcell?

    Server.UrlEncode против HttpUtility.UrlEncode

    ошибка LNK2019: неразрешенный внешний символ _main, указанный в функции ___tmainCRTStartup

    Следует ли синхронизировать метод запуска? Почему или почему нет?

    Java int to String – Integer.toString (i) vs new Integer (i) .toString ()

    Абсолютное позиционирование Графический JPanel внутри JFrame, заблокированный пустыми разделами

    Виртуальная машина теряет состояние после перезагрузки

    Объединение двух выражений (выражение <Func >)

    Последнее наблюдение перенесено вперед В кадре данных?

    Принудительная установка для вывода только монофонического звука

    JPA – Возврат автоматически сгенерированного идентификатора после сохранения ()

    Как перейти к элементу в переполненном Div?

    Как добавить текст в начало файла в Bash?

    Как протестировать адаптер переменного тока?

    Почему этот код не вызывает исключение ConcurrentModificationException?

    Давайте будем гением компьютера.