Как я могу загрузить исходный код пакета из npm без его фактической установки (т.е. без использования npm install thepackage
)?
85
Вы можете использовать, npm view [package name] dist.tarball
который вернет URL-адрес сжатого файла пакета.
Вот пример использования wget
архива:
wget $(npm view lodash dist.tarball)
npm pack <package's name>
это кратчайший текущий путьБолее простой способ сделать это
npm pack <package_name>
. Это извлечет архив из реестра, поместит его в кеш npm и поместит копию в текущий рабочий каталог. См. Https://docs.npmjs.com/cli/packисточник
npm pack --dry-run <package_name>
будет производить такой же точный вывод, не помещаяtgz
файл в текущий каталог.Если вы не установили npm с текущим общедоступным API, вы также можете получить доступ к информации о пакете в реестре npm по URL-адресу
https://registry.npmjs.org/<package-name>/
.Затем вы можете перейти к JSON по адресу,
versions > (version number) > dist > tarball
получить URL-адрес архива кода и загрузить его.источник
npm pack XXX
набрать быстрее всего, и он загрузит архив.Альтернативно:
эта команда также будет:
package
источник
В linux я обычно загружаю tar-архив такого пакета:
wget `npm v [package-name] dist.tarball`
Обратите внимание на обратные кавычки '', в stackoverflow я не вижу их четко.
"v" - это еще один псевдоним для представления:
https://docs.npmjs.com/cli/view
источник
Основываясь на ответе Густаво Родригеса , исправляет каталог «пакет» в .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
источник