如何在不实际安装的情况下从npm下载软件包的源代码(即不使用npm install thepackage
)?
答案 0 :(得分:54)
您可以使用npm view [package name] dist.tarball
来返回压缩包文件的URL。
答案 1 :(得分:37)
更简单的方法是npm pack <package_name>
。这将从注册表中检索tarball,将其放在npm缓存中,并将副本放在当前工作目录中。见https://docs.npmjs.com/cli/pack
答案 2 :(得分:21)
在linux上我经常下载这样的包的tarball:
wget `npm v [package-name] dist.tarball`
注意反引号``,在stackoverflow上我看不清楚。
&#34; V&#34;只是视图的另一个别名:
答案 3 :(得分:19)
npm pack XXX
是最快输入的,它会下载档案。
可替换地:
npm v XXX dist.tarball | xargs curl | tar -xz
这个命令也将:
package
答案 4 :(得分:11)
如果您尚未安装npm ,使用当前的公共API,您还可以从URL https://registry.npmjs.org/<package-name>/
访问npm注册表中有关包的信息。
然后,您可以在versions > (version number) > dist > tarball
导航JSON以获取代码存档的URL并下载它。
答案 5 :(得分:0)
基于Gustavo Rodrigues's answer,修复&#34;包&#34; .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
答案 6 :(得分:0)
我的团队创建了 OSS Gadget 以简化此类操作,尤其是在跨不同生态系统工作时。该套件中的一个工具称为 oss-download
:
oss-download pkg:npm/express # Latest version
oss-download pkg:npm/express@4.17.1 # Specific version
oss-download pkg:npm/express@* # All versions
oss-download -e pkg:npm/express # Decompress contents recursively
如果你只对 npm 感兴趣,那么 npm pack
是你最好的选择,但如果你没有安装 npm 或者需要用 PyPI、RubyGems、NuGet 等做类似的事情,那么 OSS小工具可能会有所帮助。