Descarga la fuente de npm sin instalarla


84

¿Cómo puedo descargar el código fuente de un paquete de npm sin realmente instalarlo (es decir, sin usar npm install thepackage)?

Respuestas:


83

Puede usar npm view [package name] dist.tarballque devolverá la URL del archivo del paquete comprimido.

Aquí hay un ejemplo de uso wgetpara descargar el tarball:

wget $(npm view lodash dist.tarball)

8
npm pack <package's name>es el camino actual más corto
revelt

Se votó en contra porque esto no usa información de autenticación npm y da como resultado errores 401 para paquetes privados.
Der Hochstapler

59

Una forma más sencilla de hacerlo es npm pack <package_name>. Esto recuperará el tarball del registro, lo colocará en su caché npm y colocará una copia en el directorio de trabajo actual. Ver https://docs.npmjs.com/cli/pack


Perfecto. Además: npm pack --dry-run <package_name>producirá exactamente la misma salida, sin colocar el tgzarchivo en el directorio actual.
friederbluemle

40

Si no ha instalado npm , con la API pública actual, también puede acceder a la información sobre un paquete en el registro de npm desde la URL https://registry.npmjs.org/<package-name>/.

Luego, puede navegar por JSON en versions > (version number) > dist > tarballpara obtener la URL del archivo de código y descargarlo.


1
¡Gracias! Esto es lo que estaba buscando
Aditya Vikas Devarapalli

28

npm pack XXX es el más rápido de escribir y descargará un archivo.

Alternativamente:

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

este comando también:

  • Descarga el paquete con barra de progreso
  • Se extrae en una carpeta llamada package


0

Basado en la respuesta de Gustavo Rodrigues , corrige el directorio "paquete" en .tgz, agrega el último descubrimiento de versiones menores.

#!/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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.