4

我正在尝试使用一些支持库开发节点应用程序。这些项目都存在于通过 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 中读取。它只修改了我的计算机的配置,所以它为什么要访问网络?这让我觉得我做错了什么。

4

1 回答 1

1

解决方案是将 npm 前缀更改为不需要 root 权限的地方。

npm config set prefix ~/npm

如果要安装 CoffeeScript 等可执行文件,请记住添加~/npm到路径中。

于 2015-04-23T08:42:07.903 回答