如何将 npm link 与只能通过 ssh 访问的 git 存储库一起使用
How to use npm link with git repositories only accessible with ssh
我正在尝试使用一些支持库开发节点应用程序。这些项目都位于通过 ssh 访问的私有存储库中。用户名和密码身份验证不是一个选项。
到目前为止,我一直在将 git 存储库 url 添加到 package.json
"dependencies": {
"my-library":"git+ssh://git@repo-url:repo-name.git#master"
},
这不是很好,因为它不会导致可重现的构建,这意味着同时开发客户端代码和库需要推动每一个小的变化。
npm link
似乎是解决此问题的理想选择,但库目录中的 运行ning 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。它只是在修改我的计算机的配置,所以它为什么要访问网络?这让我觉得我做错了什么。
解决方案是将 npm 前缀更改为不需要 root 权限的地方。
npm config set prefix ~/npm
如果您要安装 CoffeeScript 等可执行文件,请记得将 ~/npm
添加到路径中。
我正在尝试使用一些支持库开发节点应用程序。这些项目都位于通过 ssh 访问的私有存储库中。用户名和密码身份验证不是一个选项。
到目前为止,我一直在将 git 存储库 url 添加到 package.json
"dependencies": {
"my-library":"git+ssh://git@repo-url:repo-name.git#master"
},
这不是很好,因为它不会导致可重现的构建,这意味着同时开发客户端代码和库需要推动每一个小的变化。
npm link
似乎是解决此问题的理想选择,但库目录中的 运行ning 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。它只是在修改我的计算机的配置,所以它为什么要访问网络?这让我觉得我做错了什么。
解决方案是将 npm 前缀更改为不需要 root 权限的地方。
npm config set prefix ~/npm
如果您要安装 CoffeeScript 等可执行文件,请记得将 ~/npm
添加到路径中。