我正在构建两个相互依赖的私有(private) npm 包。
说我有:
project
/my-commons
package.json :
{
name : "my-commons",
version : "0.0.1"
...
}
/my-server
package.json :
{
dependencies : {
"my-commons" : "0.0.1"
}
}
我可以使用“npm link”来安装“commons”包。所以任何人愿意 开始在服务器上工作必须做的事情:
- 结帐项目
- cd 我的服务器
- npm 链接 ../my-commons
- npm 安装
并且在/my-server/node_modules 中添加了指向 ../my-commons 的符号链接(symbolic link),一切正常。
但是有没有办法告诉 npm 'my-commons' 包将总是在那个文件夹中,这样你就可以这样做:
- 结帐项目
- cd 我的服务器
- npm 安装
还是我在这里遗漏了一些明显的东西?
谢谢
最佳答案
也许。
但首先:如果 my-server
需要 my-commons
那么最好将它保存在 my-server/node_modules 中
即使那是多余的。在大多数情况下,最好将模块的依赖项与应用程序的其余部分隔离开。
在那种情况下,npm link
可以在开发过程中使用,当你在 my-commons
上工作并且想要使用 my-服务器
,无需npm publish my-commons
。
在生产中你不会想使用npm link
,因为依赖模块将失去对它们最终使用的链接模块版本的控制。如果 my-server
依赖于 my-commons
0.1.0,但是你 npm link
ed 你的 1.0.1-pre-release 版本my-commons
模块可能会崩溃。
但是,自版本 1.2.10(随 Node 0.8.19 一起提供)以来,NPM 支持对等依赖。
对等依赖项允许您指定 my-server
要求 my-commons
安装在“除”my-server
之外。这不会使您能够在 my-server
中require("my-commons")
但如果 my-server
是 my-commons
的插件。
更多信息:http://blog.nodejs.org/2013/02/07/peer-dependencies/
最后,既然你说你正在开发私有(private)包:如果安装包给你带来了麻烦,因为你不能将你的包发布到公共(public) NPM 注册中心,有查看指定依赖项的替代方法(git-、http-URL、TGZ 文件):https://docs.npmjs.com/files/package.json#dependencies
关于node.js - 如何自动链接本地 npm 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20499937/