使用Composer命令行界面向extra属性添加数据。

5
根据 composer.json schema 的文档,extra 属性允许设置“供脚本使用的任意额外数据”。
对于脚本目的,希望可以通过命令行向 extra 属性添加数据。我尝试过 composer config extra.foo bar,但是这会出现错误:Setting extra.foo does not exist or is not supported by this command
所以我想知道:是否有一种方式可以使用 Composer CLI 向 extra 属性添加数据?
更新:Composer 1.1.0 已经支持了此功能:https://getcomposer.org/doc/03-cli.md#modifying-extra-values。不幸的是,无法添加布尔或数值类型的值,因为每个值都被添加为字符串。还请参考Composer 项目的 #5492 问题
2个回答

5

从Composer 1.1.0开始,可以使用CLI将字符串值添加到extra属性中:

composer config extra.foo "some text"
composer config extra.bar 123
composer config extra.baz true

这将导致以下结果:
"extra": {
    "foo": "some text",
    "bar": "123",
    "baz": "true"
}

从Composer 2.0开始,可以使用--json--merge标志在任何JSON值类型中添加值。这包括添加数字和布尔值的可能性。请注意,HTML标记已保留。
composer config --json extra.foo '"some text"'
composer config --json extra.bar 123
composer config --json extra.baz true

这会导致以下结果:
"extra": {
    "foo": "some text",
    "bar": 123,
    "baz": true
}

这个功能的文档展示了如何从CLI中添加一个JSON对象。


0

这是不可能的,原因是通常它与某些非常特定的本地用例绑定在一起,不适用于普通用户。

所有可以通过composer config影响的参数都在此处列出:https://getcomposer.org/doc/06-config.md

如果您想向“extra”部分添加数据,则必须手动编辑它或让脚本以其他方式完成。


谢谢回复。我希望这是Composer文档中缺少的内容,比如通过composer config设置存储库的可能性。 - Aad Mathijssen
3
我发现在composer.json文件中添加额外属性最简单的方法是使用jq,一个命令行JSON处理器。结合sponge,您可以进行原地编辑:jq --indent 4 '.extra.foo = "bar"' composer.json | sponge composer.json - Aad Mathijssen
最后的评论是正确答案...多么漂亮的一行代码!令人印象深刻,谢谢Aad。 - Eugen Mayer
目前的解决方案是使用Composer 1.1或更高版本。请参见更新后的问题评论。 - Sven

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接