我一直在按照以下步骤设置私人 npm 注册表创建私人注册表的明确说明。 但是,我跳过复制步骤,因为我的目的是有一个仅容纳私有模块的空注册表。
然而,当我运行测试命令时,一切似乎都正常:
npm --registry http://localhost:5984/registry/_design/scratch/_rewrite search /^zipper
我得到以下输出,这表明 npm 正在寻找这个不应该存在于我的私人注册表中的公共模块:
npm http GET http://localhost:5984/npm_registry/_design/scratch/_rewrite/-/all/since?stale=update_after&startkey=1382392304289
npm http 200 http://localhost:5984/npm_registry/_design/scratch/_rewrite/-/all/since?stale=update_after&startkey=1382392304289
NAME DESCRIPTION AUTHOR DATE VERSION KEYWORDS
zipper Insanely simple zipfile creator for node.js =rubenv 2013-05-06 11:35 0.3.0 zip compress archive libzip
zipper-insane Insanely simple zipfile creator for node.js =diorahman 2011-12-17 15:54 0.0.1 zip compress archive libzip
此外,当我尝试从我的私有注册表安装模块时,它会安装。这是怎么回事?由于我正在运行自己的 CouchDB,而没有复制现有的 CouchDB,所以我预计数据库中不会有模块。
答案1
npm 客户端将包元数据和档案缓存在本地目录中,通常在 中~/.npm
。当您进行搜索时,它只会向注册表询问更新,并使用缓存数据执行搜索。
不幸的是,npm cache 的实现不支持多个注册表,它总是合并来自所有注册表的所有数据。
作为一种解决方法,您可以告诉 npm 在与您的私有注册表通信时使用不同的缓存目录:
npm --registry http://localhost:5984/registry/etc. --cache $HOME/.npm-private