Come posso scaricare il codice sorgente di un pacchetto da npm senza installarlo effettivamente (cioè senza usarlo npm install thepackage
)?
Risposte:
Puoi usare npm view [package name] dist.tarball
che restituirà l'URL del file del pacchetto compresso.
Ecco un esempio che usa wget
per scaricare il tarball:
wget $(npm view lodash dist.tarball)
Un modo più semplice per farlo è npm pack <package_name>
. Questo recupererà il tarball dal registro, lo metterà nella cache npm e ne metterà una copia nella directory di lavoro corrente. Vedi https://docs.npmjs.com/cli/pack
npm pack --dry-run <package_name>
produrrà lo stesso identico output, senza posizionare il tgz
file nella directory corrente.
Se non hai installato npm , con l'attuale API pubblica, puoi anche accedere alle informazioni su un pacchetto nel registro npm dall'URL https://registry.npmjs.org/<package-name>/
.
Quindi puoi navigare in JSON versions > (version number) > dist > tarball
per ottenere l'URL dell'archivio di codice e scaricarlo.
Su Linux di solito scarico il tarball di un pacchetto come questo:
wget `npm v [package-name] dist.tarball`
Notare i backtick ``, su stackoverflow non riesco a vederli chiaramente.
"v" è solo un altro alias per la visualizzazione:
Sulla base della risposta di Gustavo Rodrigues , corregge la directory "pacchetto" in .tgz, aggiunge la scoperta dell'ultima versione minore.
#!/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>
è il modo più breve in corso