Как я могу загрузить исходный код пакета из npm без его фактической установки (т.е. без использования npm install thepackage
)?
Ответы:
Вы можете использовать, npm view [package name] dist.tarball
который вернет URL-адрес сжатого файла пакета.
Вот пример использования wget
архива:
wget $(npm view lodash dist.tarball)
Более простой способ сделать это npm pack <package_name>
. Это извлечет архив из реестра, поместит его в кеш npm и поместит копию в текущий рабочий каталог. См. Https://docs.npmjs.com/cli/pack
npm pack --dry-run <package_name>
будет производить такой же точный вывод, не помещая tgz
файл в текущий каталог.
Если вы не установили npm с текущим общедоступным API, вы также можете получить доступ к информации о пакете в реестре npm по URL-адресу https://registry.npmjs.org/<package-name>/
.
Затем вы можете перейти к JSON по адресу, versions > (version number) > dist > tarball
получить URL-адрес архива кода и загрузить его.
В linux я обычно загружаю tar-архив такого пакета:
wget `npm v [package-name] dist.tarball`
Обратите внимание на обратные кавычки '', в stackoverflow я не вижу их четко.
"v" - это еще один псевдоним для представления:
Основываясь на ответе Густаво Родригеса , исправляет каталог «пакет» в .tgz, добавляет обнаружение последней минорной версии.
#!/bin/bash
if [[ $# -eq 0 ]] ; then
echo "Usage: $0 jquery bootstrap@3 tinymce@4.5"
exit 64 ## EX_USAGE
fi
set -e ## So nothing gets deleted if download fails
for pkg_name in "$@"
do
## Get latest version, also works with plain name
url=$( npm v $pkg_name dist.tarball | tail -n 1 | cut -d \' -f 2 )
tmp_dir=$( mktemp -d -p . "${pkg_name}__XXXXXXXXX" )
## Unpacks to directory named after package@version
curl $url | tar -xzf - --strip 1 --directory $tmp_dir
rm -rf $pkg_name
mv $tmp_dir $pkg_name
done
npm pack <package's name>
это кратчайший текущий путь