Laden Sie die Quelle von npm herunter, ohne sie zu installieren

83

Wie kann ich den Quellcode eines Pakets von npm herunterladen, ohne es tatsächlich zu installieren (dh ohne zu verwenden npm install thepackage)?

AURIGADL
quelle

Antworten:

83

Sie können verwenden npm view [package name] dist.tarball, um die URL der komprimierten Paketdatei zurückzugeben.

Hier ist ein Beispiel wgetzum Herunterladen des Tarballs:

wget $(npm view lodash dist.tarball)
Gustavo Rodrigues
quelle
8
npm pack <package's name>ist der kürzeste aktuelle Weg
revelt
Downvoted, da hierdurch keine npm-Authentifizierungsinformationen verwendet werden und 401-Fehler für private Pakete auftreten.
Der Hochstapler
59

Ein einfacher Weg, dies zu tun, ist npm pack <package_name>. Dadurch wird der Tarball aus der Registrierung abgerufen, in Ihrem npm-Cache abgelegt und eine Kopie in das aktuelle Arbeitsverzeichnis gestellt. Siehe https://docs.npmjs.com/cli/pack

Grahamaj
quelle
Perfekt. Außerdem: npm pack --dry-run <package_name>erzeugt dieselbe exakte Ausgabe, ohne die tgzDatei im aktuellen Verzeichnis abzulegen.
friederbluemle
39

Wenn Sie npm mit der aktuellen öffentlichen API nicht installiert haben , können Sie auch über die URL auf die Informationen zu einem Paket in der npm-Registrierung zugreifen https://registry.npmjs.org/<package-name>/.

Anschließend können Sie im JSON unter navigieren versions > (version number) > dist > tarball, um die URL des Codearchivs abzurufen und herunterzuladen.

Matteo T.
quelle
1
Vielen Dank! Das habe ich gesucht
Aditya Vikas Devarapalli
28

npm pack XXX ist am schnellsten zu tippen und es wird ein Archiv heruntergeladen.

Alternative:

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

Dieser Befehl wird auch:

  • Laden Sie das Paket mit Fortschrittsbalken herunter
  • Extrahiert in einen Ordner namens package
fregante
quelle
0

Basierend auf der Antwort von Gustavo Rodrigues wird das "Paket" -Verzeichnis in .tgz korrigiert und die neueste Entdeckung kleinerer Versionen hinzugefügt.

#!/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
Sergey Nagaytsev
quelle