Як я можу завантажити вихідний код пакета з npm, фактично не встановивши його (тобто не використовуючи npm install thepackage
)?
Відповіді:
Ви можете використовувати, npm view [package name] dist.tarball
який поверне URL-адресу стисненого файлу пакета.
Ось приклад, який використовується wget
для завантаження tarball:
wget $(npm view lodash dist.tarball)
Більш простий спосіб це зробити npm pack <package_name>
. Це дозволить отримати tarball з реєстру, помістити його в кеш 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-адресу архіву коду та завантажити його.
У Linux я зазвичай завантажую tarball пакету, подібного до цього:
wget `npm v [package-name] dist.tarball`
Зверніть увагу на зворотні позначки ``, на stackoverflow я не бачу їх чітко.
"v" - це просто ще один псевдонім для перегляду:
На основі відповіді Густаво Родрігеса виправлено каталог "пакет" у .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
npm pack <package's name>
це найкоротший поточний шлях