我怎样才能让Sinopia镜像来自registry.npmjs.org的所有npm包?

时间:2016-02-12 11:52:10

标签: node.js npm sinopia

我正致力于在离线环境中设置完整的npm存储库,并且我正在考虑使用Sinopia作为存储库。

显然以前已经做过。 Sinopia github页面上的This thread描述了一个类似的场景,您可以在将它们复制到脱机环境之前从在线环境中从registry.npmjs.org下载所有包,并且用户甚至包含一个脚本来将所有文件下载到Sinopia后端。该脚本似乎有效,但它并没有真正下载所有软件包 - 只安装了所有版本的软件包。

有没有其他方法告诉Sinopia从registry.npmjs.org下载所有的pagkages,或者我可以以某种方式从registry.npmjs.org获取一个完整的包列表并使用它将所有文件下载到Sinopia?

感谢任何输入!

1 个答案:

答案 0 :(得分:5)

您可以使用https://skimdb.npmjs.com/registry/_all_docs获取json以及注册表中所有包的列表。

您可以使用一些简单的shell脚本来提取裸名称,例如:

curl -s https://skimdb.npmjs.com/registry/_all_docs | grep \"id\": | cut -d\" -f4

注意:该列表曾在“registry.npmjs.org/-/short”中提供,但它已被删除,因为它导致服务器上的负载很大(如下所示:https://github.com/npm/npm-registry-couchapp/issues/162