API пакета NPM: как запросить пакет с помощью «@»?

#api #npm #package #scoped

Вопрос:

Вы можете запросить пакет NPM с помощью общедоступного API NPM. Например, для запроса пакета react :

 curl "https://api.npms.io/v2/package/react"
 

Это прекрасно работает. Видишь https://api-docs.npms.io/#api-Package-GetPackageInfo

Но как вы запрашиваете пакет с областью действия, т. е. с префиксом «@»?

 curl 'https://api.npms.io/v2/package/@types/react-router-dom'
 

Это не работает.

Ответ №1:

Вам просто нужно закодировать URL-адрес имени:

https://api.npms.io/v2/package/@types/react-router-dom

Решающей частью , по-видимому, является кодирование / , поэтому имя не рассматривается как два сегмента пути, а не само @ по себе:

 $ curl 'https://api.npms.io/v2/package/@types/react-router-dom' | jq '.collected.metadata.name'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  6907    0  6907    0     0  66413      0 --:--:-- --:--:-- --:--:-- 66413
"@types/react-router-dom"