首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将私有项目发布到Sinopia (专用注册表的npm附加用户失败)

如何将私有项目发布到Sinopia (专用注册表的npm附加用户失败)
EN

Stack Overflow用户
提问于 2014-03-25 14:01:25
回答 5查看 28.9K关注 0票数 20

好的,我终于找到了一个私有的npm注册中心。,但我不能向它发布任何东西.

辛托邦不支持npm附加用户,但有自己的用户管理。此外,npm还需要在npm通过npm adduser发布之前创建一个有效的用户,这是因为内部Sinopia服务器在不受支持的命令中抛出一个错误.

一个人如何使用Sinopia作为一个拥有适当用户和密码的私有注册中心?

  1. 在npmjs.org中创建一个全局用户,然后再创建一个密码相同的用户吗?
  2. 或者有更简单的方法告诉npm只使用固定的用户/pass。
  3. 或者更好地提示我用户名和密码?
  4. 还有别的吗?

简介:

辛托邦不依赖于Couch.DB,它将快速地从主(默认为全局npmjs.org)中获取它尚未拥有的包。

Sinopia启动完美,并配置为在所有接口上侦听。它在提供包裹给

代码语言:javascript
复制
npm install

我甚至将~/..npmrc配置为始终指向内部注册表。

所有项目的package.json文件都设置为

代码语言:javascript
复制
  ....
  "publishConfig" : {
     "registry" : "http://internal-npm:4873"
  },
  ....

此外,我还在js-yaml的帮助下,通过操作config.yaml,成功地在sin胸中添加了自定义用户。

代码语言:javascript
复制
crypto.createHash('sha1').update('theBigPassword').digest('hex')

现在我被困在

代码语言:javascript
复制
npm --registry=http://internal-npm:4873 --ca=null publish

经过漫长的等待,我得到了:

代码语言:javascript
复制
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

日志文件的业务端告诉我,用户不是可选的。

代码语言:javascript
复制
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胸服务器在不受支持的命令中抛出一个错误而失败。

EN

回答 5

Stack Overflow用户

发布于 2014-03-28 01:06:30

首先,这不是“鸡与蛋”的问题。

"npm附加用户“做了两件事:

  1. 它在远程服务器上创建一个新用户,或者验证它是否存在。
  2. 它将_auth添加到.npmrc中

如果用户不存在,辛托邦会抱怨,但如果存在,它会很高兴地报告成功。

所以,你要做的是:

  1. 将用户/pass添加到config.yaml (请参阅josh的答案)并重新启动sinopia服务器
  2. 运行npm adduser --registry http://internal-npm:4873/

是的,"adduser“命令令人困惑,因为它实际上不会添加新用户。它只需验证配置中是否存在用户。

如果需要,可以使用"npm登录“命令。即使它做的是完全相同的事情,它也不那么令人困惑。:)

其次,将其添加到您的package.json中:

代码语言:javascript
复制
"publishConfig": {
  "registry": "http://internal-npm:4873/"
}

这样,npm就不会再将其发布到公共注册中心,即使它是默认的。

最后,不能在同一个npmrc中同时使用两个注册中心(npmjs和私有注册表)。它甚至比你想象的还要不太安全

在大多数情况下,这是可以的,但是如果同时使用(例如,您同时维护公共和私有包),使用雅普姆而不是npm,并将类似的内容写入您的.npmrc:

代码语言:javascript
复制
[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

它将防止在任何情况下向公共注册表公开您的密码。

票数 25
EN

Stack Overflow用户

发布于 2014-03-25 18:43:42

辛托邦README确切地告诉您该做什么

添加新用户 没有添加新用户的实用程序,但至少可以使用命令行上的节点来生成密码。您将需要编辑配置并手动添加用户。 开始节点,并输入以下代码,将“newpass”替换为要获取散列的密码。 $ node > crypto.createHash('sha1').update('newpass').digest('hex')‘6c553d6f1d7a177a0db3eb4b343b0d50f9c111’>CTRL

将新用户插入config.yaml文件中。

然后运行npm adduser登录。(adduser是用于创建帐户和登录的命令;sinopia不支持创建部分。)

票数 7
EN

Stack Overflow用户

发布于 2014-03-25 16:50:33

选项1有效,但我对此并不满意。所以我会继续寻找

是的,如果我添加了一个有效的npmjs.org用户,那么swith:

代码语言:javascript
复制
npm config set registry http://internal-npm:4873/

如果同样的用户/pass存在于Sinopia中,则发布命令将工作。

代码语言:javascript
复制
npm publish --registry=http://internal-npm:4873/

缺点是,如果有人忘记显式设置私有注册表,发布将100%工作在全局npmjs.org上,这将是一场灾难。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22636885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档