Scarica il sorgente da npm senza installarlo


85

Come posso scaricare il codice sorgente di un pacchetto da npm senza installarlo effettivamente (cioè senza usarlo npm install thepackage)?

Risposte:


84

Puoi usare npm view [package name] dist.tarball che restituirà l'URL del file del pacchetto compresso.

Ecco un esempio che usa wgetper scaricare il tarball:

wget $(npm view lodash dist.tarball)

8
npm pack <package's name>è il modo più breve in corso
festeggia il

Downvoted perché questo non utilizza le informazioni di autenticazione npm e genera errori 401 per i pacchetti privati.
Der Hochstapler

59

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


Perfetto. Inoltre: npm pack --dry-run <package_name>produrrà lo stesso identico output, senza posizionare il tgzfile nella directory corrente.
friederbluemle

43

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 > tarballper ottenere l'URL dell'archivio di codice e scaricarlo.


1
Grazie! Questo è quello che stavo cercando
Aditya Vikas Devarapalli

28

npm pack XXX è il più veloce da digitare e scaricherà un archivio.

In alternativa:

npm v XXX dist.tarball | xargs curl | tar -xz

questo comando inoltre:

  • Scarica il pacchetto con barra di avanzamento
  • Estrae in una cartella chiamata package


0

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.