[javascript] npm 패키지에서“at”(@) 접두어의 의미는 무엇입니까?

에서 각도 구성 요소 라우터 설명서 난 그냥 내가 전에 본 적이없는 나는에 무슨 일이 일어나고 있는지 이해하지 않는 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 문서각도 문서를 참조하십시오 .

편집 : 그것은이 나타납니다 공개 범위 패키지가 이제 검색에서 제대로 표시!


답변

기본적으로 npm에는 두 가지 유형의 모듈이 있습니다.

  • 글로벌 모듈-오늘날 존재하는 명명 규칙을 따르는 모듈입니다. 당신 require('foo')과 많은 기쁨이 있습니다. npm install XYZ명령을 통해 한 명 이상의 사람들이 소유합니다 .

  • 범위가 지정된 모듈- @조직 이름, 슬래시 및 패키지 이름으로 시작하는 조직 이름으로 “범위 지정된”새로운 모듈입니다 ( 예 🙂 @someOrgScope/packagename. 범위는 관련 패키지를 그룹화하는 방법이며 npm이 패키지를 처리하는 방식에 대한 몇 가지 영향을 미칩니다.

범위가 지정된 패키지는 npm install에서 이름 앞에 @ 기호가 붙은 이름으로 참조하여 설치됩니다.

npm install @myorg/mypackage

또한보십시오


답변