Node.js 从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安装包
)?

您可以使用
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

如果您尚未安装npm,使用当前的公共API,您还可以从URL
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命令再次传递该文件。