- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
那么“replace ”属性如何与 composer 一起使用? ?我已经阅读了 Composer 文档,但仍然不明白。搜索更多信息并没有回答我的问题。
当我查看Laravel/Framework上的composer.json文件时在 github 上。我看不出替换将如何工作。有人可以向我解释这是如何工作的吗?变量“self.version”等于什么?
最佳答案
Composer 文档提供了两个基本示例。我将尝试解释:
Lists packages that are replaced by this package. This allows you to fork a package, publish it under a different name with its own version numbers, while packages requiring the original package continue to work with your fork because it replaces the original package.
假设您的软件使用original/library
和other/package
,它本身也需要original/library
。
现在你认为original/library
需要集成一个功能,但是维护者不会让你的建议发生在他们的包中。您决定以 better/library
名称 fork 该库,并标记一个新版本。
返回您的软件。当然,它应该开始使用 better/library
,因此您需要它,但是 other/package
仍然需要 original/library
- 代码复制!如何使其他包使用您的 better/library
而无需 fork 它并且仅更改composer.json(您仍然与该original/library
兼容,所以它应该可以工作)?
您将替换键添加到您的composer.json
:
"replace": {
"original/library":"1.0.2"
}
现在,Composer 知道,在解决 other/的依赖关系时,
。better/library
中的任何包都与 original/library
一样好。包
This is also useful for packages that contain sub-packages, for example the main symfony/symfony package contains all the Symfony Components which are also available as individual packages. If you require the main package it will automatically fulfill any requirement of one of the individual components, since it replaces them.
相同的规则,略有不同的角度:对于需要某些功能的任何其他组件来说,要求框架的组件是一个好方法。但是,如果您需要软件中的完整框架和另一个库,该库随后也需要该框架的组件,则该框架的 replace
声明允许 Composer 不必安装该单个组件两次,因为它已经包含在完整的框架中。
注意:替换版本中的占位符通常不好
在我原来的回答中,我建议:
"replace": {
"original/library":"1.*"
}
这会产生后果:Composer 现在会将您的库版本 1.0.0 视为与原始库的任何版本 1.x 一样好,即使它们修复了内容或添加了功能并在某一天发布了版本 1.2.34。这也意味着,如果您的 other/package
有一天获得更新并需要 original/library:^1.1
,则 YOUR 库中的替换为仍然有效,并声明它可以替换任何版本 1.*
,即使您没有更新内部任何内容 - 但它不能,如果您不做一些工作,您的旧代码将永远不会实现原始库的新功能,但替换内容正是如此。
所以本质上:避免在替换版本中使用通配符版本!如果您使用它们,您就对您无法知道或预测的 future 做出了陈述(除非您可以控制original/library
,但即使这样也要非常小心)。始终使用您了解并可以完全重新实现的原始/库
特定版本。
关于replace - "replace"属性如何与 Composer 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18882201/
我正在从一个旧数据库中选择数据,该数据库有一个滥用状态列。状态列中包含多条信息。值如“新联系人 YYYY”、“在线 YYYY”、“更新 YYYY”、“撤回 YYYY”等……。您可能已经猜到了,YYYY
我想使用ant的replace任务替换这样的文件之一中的 token : 版本.txt version.number=${versionNumber} build.gradle task writeV
sorted_elems 列表中有一些元素将被更改为 str 例如: sorted_elems = ['[abc]', '[xyz]', ['qwe']] 我想删除定义的字符 - [, ], ' 并打
如果替换在变量中传递,第一次和第二次替换是否等效? #!/usr/bin/env perl6 use v6; my $foo = 'switch'; my $t1 = my $t2 = my $t3
我正在做一个本地测试来比较 C# 中 String 和 StringBuilder 的 Replace 操作性能,但是对于 String 我使用了以下代码: String str = "String
我看到了所有内容,没有看到使用“--replace”的方式的内容。 如何在 wkhtmltopdf 中使用“--replace”。 请给我一个例子,谢谢。:) 最佳答案 假设您有一个页脚 my_foo
我需要在 50 多个文件中进行大量搜索/替换,并且正在使用 Sublime Text 3。 有没有办法逐步执行并交互确认每个更改?我不想要只执行所有替换的一揽子“全部替换”操作。 我正在思考 vi/v
那么“replace ”属性如何与 composer 一起使用? ?我已经阅读了 Composer 文档,但仍然不明白。搜索更多信息并没有回答我的问题。 当我查看Laravel/Framework上的
我在玩 F# 句法。 在瑞典,我们有一个游戏叫做“Backslang”(谷歌翻译自“Rövarspråk”) 规则很简单。你说的所有话都必须以特定的方式说出来。虽然人声是相同的,但每个辅音都必须用“o
是否可以在Atom或Sublime Text中对“item”一词使用“查找和替换”并将其替换为“item [i]”,其中[i]是从1开始的数字? 我有一堆看起来像这样的物品: item1 item1
我不太确定如何解释,所以我将从输出开始。我需要返回这个: { replies: [ { type: 'text', content: 'one' } { type:
我是 C# 的新手,所以请原谅我的错误。 我想在每次调用该段代码时(每次调用 2-4 次)替换字符串的某些部分。我想知道哪种方法在性能方面更好:string.Replace 或 stringBuild
我了解.Replace() 和-replace 之间的区别,但是什么是-replace 和[Regex]: :替换()? 我测试了以下 2 个代码,但对我来说结果完全一样。 我还引用了 PowerSh
如果我正在做类似的事情: someString.Replace("abc","").Replace("def","").Replace(@"c:\Windows","") 我怎样才能把它替换成 Reg
我是 C# 的新手,所以请原谅我的错误。 我想在每次调用该段代码时(每次调用 2-4 次)替换字符串的某些部分。我想知道哪种方法在性能方面更好:string.Replace 或 stringBuild
当我使用 call() 或 apply() 时,我遇到了问题。 console.log(String.prototype.replace === String.replace);//false 我认为
在我使用 5-10 个替换的情况下是否有必要使用 stringbuilder。 String someData = "......"; someData = someData.replaceAll("
我有一个字符串,我需要用字典中的值替换其中的标记。它必须尽可能高效。使用 string.replace 进行循环只会消耗内存(记住,字符串是不可变的)。 StringBuilder.Replace()
我正在使用具有许多不同库依赖项的 gradle 项目并使用新的 list 合并。在我的 标签我已经这样设置了: .... 但我收到错误消息: /android/MyApp/app/src/main
我正在尝试从一个数据库中的表中提取模式并将其传输到另一个数据库。以下是执行此操作的函数的一部分。 当 Table( ... ) 时出错被称为。 功能示例: def transfer_data(self
我是一名优秀的程序员,十分优秀!