好的,我终于找到了一个私有的npm注册中心。,但我不能向它发布任何东西.
辛托邦不支持npm附加用户,但有自己的用户管理。此外,npm还需要在npm通过npm adduser发布之前创建一个有效的用户,这是因为内部Sinopia服务器在不受支持的命令中抛出一个错误.
一个人如何使用Sinopia作为一个拥有适当用户和密码的私有注册中心?
简介:
辛托邦不依赖于Couch.DB,它将快速地从主(默认为全局npmjs.org)中获取它尚未拥有的包。
Sinopia启动完美,并配置为在所有接口上侦听。它在提供包裹给
npm install我甚至将~/..npmrc配置为始终指向内部注册表。
所有项目的package.json文件都设置为
....
"publishConfig" : {
"registry" : "http://internal-npm:4873"
},
....此外,我还在js-yaml的帮助下,通过操作config.yaml,成功地在sin胸中添加了自定义用户。
crypto.createHash('sha1').update('theBigPassword').digest('hex')现在我被困在
npm --registry=http://internal-npm:4873 --ca=null publish经过漫长的等待,我得到了:
npm ERR! need auth auth and email required for publishing
npm ERR! need auth You need to authorize this machine using `npm adduser`
npm ERR! System Linux 3.11.0-18-generic
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "--registry=http://internal-npm:4873" "--ca=null" "publish"
npm ERR! cwd /home/ciprian/workspace/netop-npm
npm ERR! node -v v0.10.15
npm ERR! npm -v 1.2.18
npm ERR! code ENEEDAUTH
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /home/ciprian/workspace/netop-npm/npm-debug.log
npm ERR! not ok code 0日志文件的业务端告诉我,用户不是可选的。
86 error need auth auth and email required for publishing
86 error need auth You need to authorize this machine using `npm adduser`
87 error System Linux 3.11.0-18-generic
88 error command "/usr/bin/nodejs" "/usr/bin/npm" "--registry=http://internal-npm:4873" "--ca=null" "publish"
89 error cwd /home/ciprian/workspace/netop-npm
90 error node -v v0.10.15
91 error npm -v 1.2.18
92 error code ENEEDAUTH
93 verbose exit [ 1, true ]现在,小鸡和蛋类的问题是,辛托邦不支持npm adduser,但是有自己的用户管理,就像我前面提到的。另外,npm需要一个通过npm adduser创建的有效用户,这是因为内部sin胸服务器在不受支持的命令中抛出一个错误而失败。
发布于 2014-03-28 01:06:30
首先,这不是“鸡与蛋”的问题。
"npm附加用户“做了两件事:
如果用户不存在,辛托邦会抱怨,但如果存在,它会很高兴地报告成功。
所以,你要做的是:
npm adduser --registry http://internal-npm:4873/是的,"adduser“命令令人困惑,因为它实际上不会添加新用户。它只需验证配置中是否存在用户。
如果需要,可以使用"npm登录“命令。即使它做的是完全相同的事情,它也不那么令人困惑。:)
其次,将其添加到您的package.json中:
"publishConfig": {
"registry": "http://internal-npm:4873/"
}这样,npm就不会再将其发布到公共注册中心,即使它是默认的。
最后,不能在同一个npmrc中同时使用两个注册中心(npmjs和私有注册表)。它甚至比你想象的还要不太安全。
在大多数情况下,这是可以的,但是如果同时使用(例如,您同时维护公共和私有包),使用雅普姆而不是npm,并将类似的内容写入您的.npmrc:
[registries."https://registry.npmjs.org/"]
_auth = (your auth string for public registry)
[registries."http://internal-npm:4873/"]
_auth = (your auth string for private registry)
always-auth = true它将防止在任何情况下向公共注册表公开您的密码。
发布于 2014-03-25 18:43:42
辛托邦README确切地告诉您该做什么。
添加新用户 没有添加新用户的实用程序,但至少可以使用命令行上的节点来生成密码。您将需要编辑配置并手动添加用户。 开始节点,并输入以下代码,将“newpass”替换为要获取散列的密码。 $ node > crypto.createHash('sha1').update('newpass').digest('hex')‘6c553d6f1d7a177a0db3eb4b343b0d50f9c111’>CTRL
将新用户插入config.yaml文件中。
然后运行npm adduser登录。(adduser是用于创建帐户和登录的命令;sinopia不支持创建部分。)
发布于 2014-03-25 16:50:33
选项1有效,但我对此并不满意。所以我会继续寻找
是的,如果我添加了一个有效的npmjs.org用户,那么swith:
npm config set registry http://internal-npm:4873/如果同样的用户/pass存在于Sinopia中,则发布命令将工作。
npm publish --registry=http://internal-npm:4873/缺点是,如果有人忘记显式设置私有注册表,发布将100%工作在全局npmjs.org上,这将是一场灾难。
https://stackoverflow.com/questions/22636885
复制相似问题