Comment puis-je télécharger le code source d’un paquet à partir de npm sans l’installer (par exemple, sans utiliser npm install thepackage
)?
Vous pouvez utiliser npm view [package name] dist.tarball
qui renverra l'URL du fichier de package compressé.
Un moyen plus simple de faire ceci est npm pack <package_name>
. Cela récupérera l'archive du registre, la placera dans votre cache npm et en placera une copie dans le répertoire de travail en cours. Voir https://docs.npmjs.com/cli/pack
Sur Linux, je télécharge généralement l'archive tar d'un paquet comme celui-ci:
wget `npm v [package-name] dist.tarball`
Remarquez les backticks ``, sur stackoverflow, je ne les vois pas clairement.
"v" est juste un autre alias pour la vue:
npm pack XXX
est le plus rapide à taper et il téléchargera une archive.
Alternativement:
npm v XXX dist.tarball | xargs curl | tar -xz
cette commande va aussi:
package
Si vous n'avez pas installé npm avec l'API publique actuelle, vous pouvez également accéder aux informations relatives à un paquet dans le registre npm à partir de l'URL https://registry.npmjs.org/<package-name>/
.
Ensuite, vous pouvez naviguer dans le JSON à versions > (version number) > dist > tarball
pour obtenir l'URL de l'archive de code et la télécharger.
Basé sur la réponse de Gustavo Rodrigues , corrige le répertoire "package" au format .tgz, ajoute la dernière découverte de version mineure.
#!/bin/bash
if [[ $# -eq 0 ]] ; then
echo "Usage: $0 jquery bootstrap@3 [email protected]"
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