作曲家工作流程如何真正工作


How does Composer workflow really work?

顺便说一句,我缺乏一些睡眠,我现在似乎被封锁了,这可能会让你觉得这是毫无意义的咆哮,所以如果它们看起来不是这样,请尝试耐心地接受它们。

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

以贝哈特为例。如果我通过 PEAR(现已过时(安装它,我会执行上述过程,然后我可以通过 behat 立即访问它,仅此而已。如果我对Composer生成的整个bin文件夹进行符号链接,除了behat之外,我还会收到三个"命令":behat.batrelease

我做错了什么吗?有没有办法集中正确的二进制文件,例如在/usr/local/bin上,最好不必添加新的路径来$PATH?有没有办法通过作曲家做到这一点?

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

你看?这是很多混合的信息,但这就是我现在的头脑感觉。我想我正在寻找类似另一个问题的东西,只是应用于"供应商"二进制文件。

提前感谢!

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

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

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

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

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

我不确定目前绝对的bin-dir是否有效,我尤其不确定这样做是否是一个好主意,但这是一种选择。最好我会说你应该把它放在"bin",并在你的 PATH 中添加~/phputils/bin。然后你可以进入那个目录,运行作曲家安装/更新,就是这样。

还有一个技巧是在/usr/local/bin 中做一个 composer-g shell 脚本,该脚本执行cd ~/phputils/ && composer $*,以便您可以从任何地方调用composer-g update behat/behat