web-dev-qa-db-fra.com

Télécharger le source depuis npm sans l'installer

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)?

53
AURIGADL

Vous pouvez utiliser npm view [package name] dist.tarball qui renverra l'URL du fichier de package compressé.

51
Gustavo Rodrigues

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

35
grahamaj

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:

https://docs.npmjs.com/cli/view

18
Marcs

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:

  • Télécharger le package avec barre de progression
  • Extraits dans un dossier appelé package
18
bfred.it

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.

9
Matteo T.

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
0
Sergey Nagaytsev