我正在构建两个相互依赖的私有 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 的符号链接,一切都很好。
但是有没有办法告诉 npm 'my-commons' 包将always位于该文件夹中,这样您就可以执行以下操作:
或者我在这里遗漏了一些明显的东西?
Thanks
Maybe.
但首先:如果my-commons
需要由my-server
那么保留它很可能是个好主意my-server/node_modules
即使这是多余的。在大多数情况下,最好将模块的依赖项与应用程序的其余部分隔离。
在那种场景下,npm link
可以在开发期间使用my-commons
并想要使用以下更改my-server
无需npm publish my-commons
.
在生产中你不会想使用npm link
,因为依赖模块将失去对它们最终使用的链接模块版本的控制。如果my-server
依赖于取决于my-commons
0.1.0,但是你npm link
编辑了您的 1.0.1 预发布版本my-commons
模块可能会崩溃。
However,自版本 1.2.10(随节点 0.8.19 一起提供)起,NPM 支持对等依赖关系。
对等依赖关系允许您指定my-server
要求my-commons
安装“此外”my-server
。这确实not使您能够require("my-commons")
inside my-server
但如果my-server
是一个插件my-commons
。
了解更多信息:http://blog.nodejs.org/2013/02/07/peer-dependencies/ http://blog.nodejs.org/2013/02/07/peer-dependencies/
最后,既然你说你正在开发private软件包:如果安装软件包给您带来麻烦,因为您无法将软件包发布到公共 NPM 注册表,请查看指定依赖项的替代方法(git-、http-URL、TGZ 文件):https://docs.npmjs.com/files/package.json#dependencies https://docs.npmjs.com/files/package.json#dependencies
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)