Завантажте джерело з npm, не встановлюючи його


84

Як я можу завантажити вихідний код пакета з npm, фактично не встановивши його (тобто не використовуючи npm install thepackage)?

Відповіді:


83

Ви можете використовувати, npm view [package name] dist.tarballякий поверне URL-адресу стисненого файлу пакета.

Ось приклад, який використовується wgetдля завантаження tarball:

wget $(npm view lodash dist.tarball)

8
npm pack <package's name>це найкоротший поточний шлях
revelt

Проголосовано проти, оскільки при цьому не використовується інформація про автентифікацію npm, що призводить до помилок 401 для приватних пакетів.
Der Hochstapler

59

Більш простий спосіб це зробити npm pack <package_name>. Це дозволить отримати tarball з реєстру, помістити його в кеш npm і помістити копію в поточний робочий каталог. Див. Https://docs.npmjs.com/cli/pack


Ідеально Також: npm pack --dry-run <package_name>буде видавати однакові результати, не поміщаючи tgzфайл у поточний каталог.
friederbluemle

41

Якщо ви не встановили npm , за допомогою поточного загальнодоступного API, ви також можете отримати доступ до інформації про пакет у реєстрі npm за допомогою URL-адреси https://registry.npmjs.org/<package-name>/.

Потім ви можете перейти до JSON за адресою, versions > (version number) > dist > tarballщоб отримати URL-адресу архіву коду та завантажити його.


1
Дякую! Це те, що я шукав
Aditya Vikas Devarapalli

28

npm pack XXX найшвидше вводиться, і він завантажить архів.

Або:

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

ця команда також:

  • Завантажте пакет з індикатором прогресу
  • Витягує у папку з назвою package

21

У Linux я зазвичай завантажую tarball пакету, подібного до цього:

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

Зверніть увагу на зворотні позначки ``, на stackoverflow я не бачу їх чітко.

"v" - це просто ще один псевдонім для перегляду:

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


2
Ця команда дає вам пряме посилання на tarball. registry.npmjs.org/packagename/-/packagename-version.tgz
Ернст Ернст

0

На основі відповіді Густаво Родрігеса виправлено каталог "пакет" у .tgz, додано останню незначну версію відкриття.

#!/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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.