如何让 Sinopia 镜像来自 registry.npmjs.org 的所有 npm 包?

How can I get Sinopia to mirror all npm packages from registry.npmjs.org?

我正在离线环境中建立一个完整的 npm 存储库,我正在考虑使用 Sinopia 作为存储库。

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

是否有其他方法告诉 Sinopia 从 registry.npmjs.org 下载所有 pagkages,或者我能以某种方式从 registry.npmjs.org 获得完整的软件包列表并使用它来将所有文件下载到 Sinopia 吗?

欢迎任何意见!

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