Ily*_*512 44 replace package-managers composer-php
那么" 替换 "属性如何与作曲家一起工作?我读过作曲家的文档,但仍然不理解.搜索更多信息没有回答我的问题.
当我在github 上查看Laravel/Framework上的composer.json文件时.我看不出替换会如何工作.有人可以向我解释这是如何工作的吗?变量"self.version"将等于什么?
Sve*_*ven 75
Composer文档提供了两个基本示例.我会试着解释一下:
列出由此包替换的包.这允许您分叉一个包,使用其自己的版本号以不同的名称发布它,而需要原始包的包继续使用您的fork,因为它取代了原始包.
假设您的软件使用original/library和other/package本身也需要original/library.
现在您认为original/library需要集成一个功能,但维护人员不会让您的建议在他们的包中发生.您决定在名称下分叉该库better/library,并标记新版本.
回到你的软件.当然它应该开始使用better/library,所以你需要它,但other/package仍然需要original/library- 代码重复!你怎么能让其他包使用你的better/library而不是也只是改变了composer.json(你仍然兼容它original/library,所以它应该工作)?
您为自己添加了一个替换键composer.json:
"replace": {
"original/library":"1.0.2"
}
Run Code Online (Sandbox Code Playgroud)
现在,Composer知道你的任何软件包都与解决它的依赖关系better/library一样好.original/libraryother/package
这对于包含子包的包也很有用,例如,主symfony/symfony包中包含所有Symfony组件,这些组件也可作为单独的包提供.如果您需要主包,它将自动满足其中一个组件的任何要求,因为它取代了它们.
相同的规则,略有不同的角度:对于需要某些功能的任何其他组件,需要框架的组件是一种很好的方法.但是如果您需要软件中的完整框架和另一个库(后来也需要该框架的组件),框架的replace声明允许Composer不必安装两次单个组件,因为它已经包含在完整框架中框架.
创建自己的程序包时,您可以定义您使用composer.json哪种程序包,provide这基本上会告诉Composer您的程序包已经安装了,因此无需再次安装。
如果使用replaceproperty,它将告诉Composer您的软件包想要用您自己的fork替换原始软件包,因此其他软件包不需要安装它。
例如,如果a/a软件包需要b/b并且您告诉您要替换b/b,则它将不会在Composer install/ 上下载update。
此处有更详细的说明:Composer中的“替换”属性如何工作?
| 归档时间: |
|
| 查看次数: |
17136 次 |
| 最近记录: |