从npm下载源代码而不安装它

时间:2013-02-23 01:03:09

标签: node.js package npm

如何在不实际安装的情况下从npm下载软件包的源代码(即不使用npm install thepackage)?

7 个答案:

答案 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;只是视图的另一个别名:

https://docs.npmjs.com/cli/view

答案 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小工具可能会有所帮助。