Скачать исходный код из npm, не устанавливая его


85

Как я могу загрузить исходный код пакета из npm без его фактической установки (т.е. без использования npm install thepackage)?

Ответы:


84

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

Вот пример использования wgetархива:

wget $(npm view lodash dist.tarball)

8
npm pack <package's name>это кратчайший текущий путь
revelt

Проголосовали против, поскольку при этом не используется информация аутентификации npm и возникает ошибка 401 для частных пакетов.
Der Hochstapler,

59

Более простой способ сделать это npm pack <package_name>. Это извлечет архив из реестра, поместит его в кеш npm и поместит копию в текущий рабочий каталог. См. Https://docs.npmjs.com/cli/pack


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

42

Если вы не установили npm с текущим общедоступным API, вы также можете получить доступ к информации о пакете в реестре npm по URL-адресу https://registry.npmjs.org/<package-name>/.

Затем вы можете перейти к JSON по адресу, versions > (version number) > dist > tarballполучить URL-адрес архива кода и загрузить его.


1
Спасибо! Это то, что я искал
Адитья Викас Деварапалли

28

npm pack XXX набрать быстрее всего, и он загрузит архив.

Альтернативно:

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

эта команда также будет:

  • Скачать пакет с индикатором выполнения
  • Распаковывается в папку с именем package

21

В linux я обычно загружаю tar-архив такого пакета:

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

Обратите внимание на обратные кавычки '', в stackoverflow я не вижу их четко.

"v" - это еще один псевдоним для представления:

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


2
Эта команда дает вам прямую ссылку на архив. 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.