Node.js 从npm下载源代码而不安装它
如何从npm下载包的源代码而不进行实际安装(即不使用Node.js 从npm下载源代码而不安装它,node.js,package,npm,Node.js,Package,Npm,如何从npm下载包的源代码而不进行实际安装(即不使用npm安装包)?您可以使用npm view[package name]dist.tarball返回压缩包文件的URL 下面是一个使用wget下载tarball的示例: wget $(npm view lodash dist.tarball) 在linux上,我通常会下载如下包的tarball: wget `npm v [package-name] dist.tarball` 注意,在stackoverflow上,我看不清它们的背面标记“`”
npm安装包
)?您可以使用npm view[package name]dist.tarball
返回压缩包文件的URL
下面是一个使用wget
下载tarball的示例:
wget $(npm view lodash dist.tarball)
在linux上,我通常会下载如下包的tarball:
wget `npm v [package-name] dist.tarball`
注意,在stackoverflow上,我看不清它们的背面标记“`”
“v”只是视图的另一个别名:
一种更简单的方法是
npm-pack
。这将从注册表中检索tarball,将其放在npm缓存中,并将副本放在当前工作目录中。请参阅npm pack XXX
是最快的键入方式,它将下载一个存档
或者:
npm v XXX dist.tarball | xargs curl | tar -xz
此命令还将:
- 下载带有进度条的软件包
- 提取到名为
package
https://registry.npmjs.org//
然后,您可以在versions>(版本号)>dist>tarball中导航JSON,以获取代码存档的URL并下载它。基于.tgz中的“package”目录,添加了最新的次要版本发现
#!/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
我的团队致力于让这类事情变得更容易,尤其是在不同的生态系统中工作时。此套件中的一个工具称为oss下载
:
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小工具可能会有所帮助。此命令提供到tarball的直接链接<代码>npm包被否决,因为这不使用npm身份验证信息,并导致401个私人包错误。谢谢!这就是我想要的完美。另外:npm pack--dry run
将产生相同的精确输出,而无需将tgz
文件放在当前目录中。此外,如果您想保留与注册表相同的文件名,可以跳过最后一个管道,如:npm v XXX dist.tarball | xargs curl-O
。在本例中,curl-O将保留npm注册表中的文件名,并且由于该文件已经是tar.gz文件,因此无需通过tar命令再次传递该文件。