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


84

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

Answers:



59

一种更简单的方法是npm pack <package_name>。这将从注册表中检索tarball,将其放在npm缓存中,然后将副本放入当前工作目录中。参见https://docs.npmjs.com/cli/pack


完善。另外:npm pack --dry-run <package_name>将产生相同的准确输出,而无需将tgz文件放在当前目录中。
Friederbluemle

40

如果尚未使用当前的公共API安装npm,则还可以从URL访问npm注册表中有关软件包的信息https://registry.npmjs.org/<package-name>/

然后,您可以浏览JSON,versions > (version number) > dist > tarball以获取代码档案的URL并下载。


1
谢谢!这就是我想要的
Aditya Vikas Devarapalli

28

npm pack XXX 是最快输入的类型,它将下载一个存档。

或者:

npm v XXX dist.tarball | xargs curl | tar -xz

该命令还将:

  • 使用进度条下载软件包
  • 提取到名为的文件夹中 package


0

根据Gustavo Rodrigues的回答,修复.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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.