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

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)

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


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.


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


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 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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.