ti-enxame.com

Baixar fonte do npm sem instalá-lo

Como posso baixar o código-fonte de um pacote do npm sem realmente instalá-lo (ou seja, sem usar o npm install thepackage)?

53
AURIGADL

Você pode usar o npm view [package name] dist.tarball que retornará o URL do arquivo do pacote compactado.

51
Gustavo Rodrigues

Uma maneira mais simples de fazer isso é npm pack <package_name>. Isso irá recuperar o tarball do registro, colocá-lo em seu cache npm e colocar uma cópia no diretório de trabalho atual. Veja https://docs.npmjs.com/cli/pack

35
grahamaj

No linux eu costumo baixar o tarball de um pacote como este:

wget `npm v [package-name] dist.tarball`

Observe os backticks ``, no stackoverflow eu não consigo vê-los claramente.

"v" é apenas outro alias para exibição:

https://docs.npmjs.com/cli/view

18
Marcs

npm pack XXX é o mais rápido de digitar e baixará um arquivo.

Alternativamente:

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

este comando também irá:

  • Baixe o pacote com barra de progresso
  • Extrai em uma pasta chamada package
18
bfred.it

Se você não instalou o npm , com a API pública atual, você também pode acessar as informações sobre um pacote no registro npm da URL https://registry.npmjs.org/<package-name>/.

Em seguida, você pode navegar pelo JSON em versions > (version number) > dist > tarball para obter o URL do archive de código e baixá-lo.

9
Matteo T.

Baseado em a resposta de Gustavo Rodrigues , corrige o diretório "pacote" em .tgz, adiciona a última descoberta de versão secundária.

#!/bin/bash

if [[ $# -eq 0 ]] ; then
    echo "Usage: $0 jquery [email protected] [email protected]"
    exit 64 ## EX_USAGE
fi

set -e ## So nothing gets deleted if download fails

for pkg_name in "[email protected]"
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 [email protected]
    curl $url | tar -xzf - --strip 1 --directory $tmp_dir
    rm -rf $pkg_name
    mv $tmp_dir $pkg_name
done
0
Sergey Nagaytsev