W dokumentacji Angular Component Router natknąłem się na polecenie npm, którego nigdy wcześniej nie widziałem i nie rozumiem, co się dzieje:
npm install @angular/router --save
Co to znaczy @angular/router
?
Czy cały ciąg to nazwa pakietu? Ale potem nie mogę znaleźć tego pakietu, gdy korzystam z wyszukiwania na npmjs.com . A także wyszukiwanie wiersza poleceń nie zwraca takiego pakietu:
npm search @angular/router
:No match found for "@angular/router"
Czy jest więc @angular/
jakiś mechanizm prefiksu w npm? Jak to działa?
javascript
angular
npm
jbandi
źródło
źródło
npm help scope
Odpowiedzi:
Jest to nowa funkcja NPM zwana „pakietami o zasięgu”, która skutecznie pozwala na umieszczanie pakietów nazw w NPM. Każdy użytkownik i organizacja w NPM ma swój własny zakres i są jedynymi osobami, które mogą dodawać do niego pakiety.
Jest to przydatne z kilku powodów:
@angular
, wiesz, że został opublikowany przez główny zespół Angular.http
jest już zajęta w głównym repozytorium, ale Angular też może to mieć@angular/http
.Powodem, dla którego pakiety o zasięgu nie są wyświetlane w wyszukiwaniu publicznym, jest to, że wiele z nich to prywatne pakiety tworzone przez organizacje korzystające z płatnych usług NPM i nie są wygodne otwieranie wyszukiwania, dopóki nie będą całkowicie pewni, że nie są upublicznienie czegokolwiek, co nie powinno być publiczne - z prawnego punktu widzenia jest to całkiem zrozumiałe.
Aby uzyskać więcej informacji, zobacz dokumenty NPM i dokumenty Angular .
EDYCJA: Wygląda na to, że pakiety o zasięgu publicznym pokazują się teraz poprawnie podczas wyszukiwania!
źródło
Zasadniczo istnieją dwa typy modułów na npm, są one -
Moduły globalne - są to moduły zgodne z istniejącą konwencją nazewnictwa. Ty
require('foo')
i tam jest wiele radości. Są własnością jednej lub więcej osób za pośrednictwemnpm install XYZ
polecenia.Moduły o zasięgu - są to nowe moduły, które są „zakresowane” pod nazwą organizacji, która zaczyna się
@
od nazwy organizacji, ukośnika, a na końcu nazwy pakietu, np@someOrgScope/packagename
. Zakresy są sposobem grupowania powiązanych pakietów, a także wpływają na kilka rzeczy na temat sposobu traktowania pakietu przez npm.Pakiet o zasięgu jest instalowany poprzez odniesienie go do nazwy, poprzedzonej znakiem @, w instalacji npm:
Zobacz też
http://blog.nodejitsu.com/a-summary-of-scoped-modules-in-npm/
https://docs.npmjs.com/misc/scope
źródło