如何使用只有ssh可访问的git存储库的npm链接
我正在尝试开发一些支持库的节点应用程序。 这些项目都存在于通过ssh访问的私有存储库中。 用户名和密码validation不是一个选项。
到目前为止,我一直在把git仓库url添加到package.json中
"dependencies": { "my-library":"git+ssh://git@repo-url:repo-name.git#master" },
这不是很好,因为它不会导致可重复的构build,这意味着在开发客户端代码和库的同时需要推动每一个小小的变化。
npm link
似乎是解决这个问题的理想之选,但是在库目录中运行npm链接会产生以下错误:
~/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”是一个animation微调。 我已经确定,当我尝试以路由的方式访问存储库时,这就是git所做的事情; 无论出于什么原因,它无法看到我的~/.ssh/id_rsa
或我的SSH代理。
我想我可能可以通过计算出如何为root运行ssh-agent来解决这个问题,但是对于我来说, npm link
甚至需要从git读取数据才是有意义的。 它正在修改只有我的电脑的configuration,所以它为什么要访问networking? 这让我觉得我在做别的事情。
解决方法是将npm前缀更改为不需要root权限的地方。
npm config set prefix ~/npm
请记住,如果您安装了诸如CoffeeScript的可执行文件,请将~/npm
添加到path中。