Composer工作流程如何真正起作用?

时间:2012-07-18 05:31:01

标签: php behat composer-php

顺便说一下,我现在缺少睡眠,而且我现在似乎被头脑挡住了,这可能会让你觉得这对你很无聊,所以如果他们看起来不那么请耐心地接受它们。 / p>

我正在开发OS X Snow Leopard。我不会说谎我喜欢访问PEAR为我设置的二进制文件。我安装了PEAR包之后只需brew unlink php53brew link php53,所以我在/usr/local/bin中获取了二进制文件。

以Behat为例。如果我通过PEAR(现在已经过时)安装它,我会执行上面的过程,然后我立即通过behat访问它,就这样。如果我要对整个bin文件夹生成的符号链接进行符号链接,除了behat之外,我会得到三个“命令”:behat.batrelease

我做错了吗?有没有办法集中正确的二进制文件,例如/usr/local/bin,最好不必添加$PATH的新路径?有没有办法通过Composer来实现?

我正在考虑使用npm,您可以在其中设置模块的全局和本地版本。我想要(正确的)二进制文件的舒适全球版本。一种宝石,没有不必要的重复。

你知道吗?这是很多混合信息,但这就是我现在的感觉。我想我正在寻找像this other question这样的东西,只适用于“供应商”二进制文件。

提前致谢!

PS:如果我真的听起来像一个悲惨的人,请告诉我,我会在睡个好觉后的第一个小时重述我的信息。谢谢!

1 个答案:

答案 0 :(得分:6)

问题是,如果你在全球范围内安装东西,当一个项目需要Behat 1.5和另一个不兼容的Behat 2.0(虚构版本)时会发生什么?使用require-dev在项目本身中安装这些工具是解决此问题的好方法。然后你只需要在你的项目中调用bin / behat就可以了(假设你在你的作曲家配置中放了一个bin-dir: bin,否则它就是vendor / bin / behat)。

关于behat.batrelease,这不会发生。这些文件存在于behat中,但它们不会在composer bin目录中链接。

最后,如果你真的想让它全局化,你可以使用〜/ phputils / composer.json或其他东西:

{
     "require": {
         "behat/behat": "*"
     },
     "config": {
         "bin-dir": "/usr/local/bin"
     }
}

我不确定目前绝对的bin-dir是否正常工作,我特别不确定这样做是否是一个好主意,但这是一个选择。我最好说你应该把它作为"bin"并将~/phputils/bin添加到你的路径中。然后你可以进入该目录,运行composer install / update,就是这样。

还可以在/ usr / local / bin中执行composer -g shell脚本来执行cd ~/phputils/ && composer $*,这样您就可以从任何地方调用composer-g update behat/behat