Завантажте джерело з 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.