В чем смысл префикса «at» (@) для пакетов npm?
В документации на угловой компонентный маршрутизатор я просто наткнулся на команду npm, которую я никогда раньше не видел, и я не понимаю, что происходит:
npm install @angular/router --save
В чем смысл @angular/router
?
Является ли целая строка именем пакета? Но тогда я не нахожу этот пакет, когда я использую поиск на npmjs.com . А также поиск в командной строке не возвращает такой пакет:
- npm command - sudo или нет?
- NPM устанавливает зависимости в неправильном месте
- «Сообщение не удалось извлечь из реестра» при попытке установить любой модуль
- npm ERR! Ошибка: подключите ECONNREFUSED
- узел 5.5.0 уже установлен, но node -v выбирает «v4.2.1» на OS X и homebrew?
npm search @angular/router :No match found for "@angular/router"
Так что это @angular/
какой-то префиксный механизм в npm? И как это работает?
- Browserify - вызов функции, связанной с файлом, созданным с помощью браузера в браузере
- Исправление npm-пути в Windows 8 и 10
- npm WARN notsup ПРОПУСТИТЬ ДОПОЛНИТЕЛЬНАЯ ЗАВИСИМОСТЬ: Неподдерживаемая платформа для [email protected]
- Что такое опция -save для установки npm?
- npm ошибки установки с ошибкой: ENOENT, chmod
- NodeJS требует глобального модуля / пакета
- можете ли вы разместить частный repository для своей организации для использования с npm?
- «Npm install» устанавливает все зависимости в каталоге node_modules, вместо того, чтобы иметь вложенные
Это новая функция 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
смотрите также