Jak mogę pobrać kod źródłowy pakietu z npm bez faktycznej instalacji (tj. Bez używania npm install thepackage
)?
Odpowiedzi:
Możesz użyć, npm view [package name] dist.tarball
który zwróci adres URL skompresowanego pliku pakietu.
Oto przykład użycia wget
do pobrania tarballa:
wget $(npm view lodash dist.tarball)
Prostszym sposobem na to jest npm pack <package_name>
. Spowoduje to pobranie archiwum tar z rejestru, umieszczenie go w pamięci podręcznej npm i umieszczenie kopii w bieżącym katalogu roboczym. Zobacz https://docs.npmjs.com/cli/pack
npm pack --dry-run <package_name>
zwróci dokładnie to samo wyjście, bez umieszczania tgz
pliku w bieżącym katalogu.
Jeśli nie zainstalowałeś npm , z obecnym publicznym API, możesz również uzyskać dostęp do informacji o pakiecie w rejestrze npm z adresu URL https://registry.npmjs.org/<package-name>/
.
Następnie możesz przejść do JSON pod adresem, versions > (version number) > dist > tarball
aby uzyskać adres URL archiwum kodu i pobrać go.
W Linuksie zazwyczaj pobieram archiwum takiego pakietu:
wget `npm v [package-name] dist.tarball`
Zwróć uwagę na backticks ``, na stackoverflow nie widzę ich wyraźnie.
„v” to po prostu kolejny alias do wyświetlenia:
Opierając się na odpowiedzi Gustavo Rodriguesa , naprawia katalog „pakiet” w .tgz, dodaje najnowsze wykrywanie wersji pomocniczych.
#!/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>
jest najkrótszą obecną drogą