【发布时间】:2015-04-23 16:42:07
【问题描述】:
我正在尝试使用一些支持库开发节点应用程序。这些项目都存在于通过 ssh 访问的私有存储库中。用户名和密码验证不是一个选项。
到目前为止,我一直在将 git 存储库 url 添加到 package.json 中
"dependencies": {
"my-library":"git+ssh://git@repo-url:repo-name.git#master"
},
这不是很好,因为它不会导致可重现的构建,这意味着同时开发客户端代码和库需要推动每一个微小的变化。
npm link 似乎是解决此问题的理想选择,但在库目录中运行 npm link 会产生以下错误:
~/mylibrary$ npm link
npm ERR! Error: EACCES, unlink '/usr/local/lib/node_modules/mockelganger'
etc etc
很公平,它正在尝试修改系统全局位置。
~/mylibrary$ sudo npm link
|it@repo-url's password: -
那个“|”遮挡“g”是一个动画微调器。我已经确定这是 git 在我尝试将存储库作为路由访问时所做的;无论出于何种原因,它都看不到我的 ~/.ssh/id_rsa 或我的 ssh 代理。
我想我可以通过弄清楚如何为 root 运行 ssh-agent 来解决这个问题,但对我来说 npm link 甚至需要从 git 中读取是没有意义的。它只修改了我的计算机的配置,所以它为什么要访问网络?这让我觉得我做错了什么。
【问题讨论】: